Excel VBA で「あ行」のレコードを AdvancedFilter で抽出する方法

目次

概要

Excel の AdvancedFilter を利用すれば、列見出しを再活用した条件範囲を設定し、「あ・い・う・え・お」で始まるデータのみを抽出できます。抽出後はデータの並び順を保持したまま可視行が切り替わるため、後続処理も手間なく実施可能です。本記事では、条件範囲の作成手順と VBA サンプルコードを丁寧にご説明いたします。


前提条件

項目内容
対応 ExcelMicrosoft 365 または 2016 以降
元データ範囲ワークシート「Data」の A2:C31(見出し行を含む)
条件範囲同シート H2:H7(見出しセルと条件 5 行)
マクロ設置先標準モジュール

条件範囲(Criteria Range)の設定

  1. 抽出対象列(例:「氏名」)の見出しセルを H2 にコピーします。
  2. H3:H7 に下記の条件を入力します。
セル条件式
H3あ*
H4い*
H5う*
H6え*
H7お*
  • * はワイルドカードで、先頭が「あ・い・う・え・お」のいずれかである文字列を意味します。
  • 条件を同じ列に縦に並べると OR 条件、同じ行に横に並べると AND 条件になります。

VBA サンプルコード

Sub FilterKanaAGyō()

    Dim srcRange  As Range   ' 元データ範囲
    Dim condRange As Range   ' 条件範囲
    
    ' 元データと条件範囲を設定
    Set srcRange  = Worksheets("Data").Range("A2").Resize(30, 3)  ' A2:C31
    Set condRange = Worksheets("Data").Range("H2:H7")             ' 見出し + 条件
    
    ' AdvancedFilter をインプレースで実行
    srcRange.AdvancedFilter _
        Action:=xlFilterInPlace, _
        CriteriaRange:=condRange
    
    MsgBox "あ行のレコードを抽出しました。", vbInformation

End Sub

コード解説

説明
7Resize(30, 3) で 30 行 3 列の元データ範囲を指定しています。必要に応じて行数・列数を調整してください。
10条件範囲として見出しセルと 5 行分の条件セルを指定しています。
13xlFilterInPlace により元データの並びを維持したまま可視行が切り替わります。

応用ポイント

目的実装方法
抽出結果を別シートへ転記Action:=xlFilterCopy とし、CopyToRange:=Worksheets("Result").Range("A1") を追加します。
条件行の増減に対応condRange を動的に再設定し、条件セルを増減させるだけで抽出内容を変更できます。
抽出解除If Worksheets("Data").FilterMode Then Worksheets("Data").ShowAllData を実行し、元の表示に戻します。

よくある質問

質問回答
別シートに条件範囲を置いても動作しますか。可能です。CriteriaRange に別シートの範囲を指定してください。
数値や日付でも同様の方法で抽出できますか。はい。条件セルに数値の比較演算子(例:>1000)や日付の式(例:>=2024/01/01)を入力すると抽出できます。

まとめ

AdvancedFilter とワイルドカードを組み合わせることで、「あ行」のデータを簡潔に抽出できます。条件範囲を変更するだけで別の五十音にも対応でき、柔軟性の高いフィルター処理を実現可能です。ぜひ日常業務のデータ抽出やレポート作成にお役立てください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次