Excel VBA で “あ行” のレコードだけを抽出する方法【AutoFilter と配列の応用】

目次

概要

Excel ワークシート上のデータに対して、「あ・い・う・え・お」で始まる行だけを抽出したい場合、AutoFilter配列条件 を組み合わせると効率的です。本記事では、対象列の先頭文字を判定し、条件配列を動的に生成してフィルターを実行するマクロをご紹介いたします。


前提条件

項目内容
対応 ExcelMicrosoft 365 または 2016 以降
データ範囲A2:E150 に見出し行を含む表が配置されている想定
抽出対象列B 列(列番号 2)
マクロ設置先標準モジュール

サンプルコード(VBA)

Sub FilterByJapaneseInitial()

    Dim tgtList   As Range            ' 表全体
    Dim cell      As Range            ' ループ用セル
    Dim criteria  As Variant          ' 条件配列
    Dim tmpArr()  As String           ' 動的配列
    Dim i         As Long
    
    Set tgtList = Worksheets("Sheet1").Range("A2").CurrentRegion
    ReDim tmpArr(0)
    
    '-- B 列の値を確認し、「あ行」で始まる文字列を配列に追加 --
    For Each cell In tgtList.Columns(2).Cells
        If cell.Row <= tgtList.Row Then GoTo ContinueLoop   ' 見出し行を除外
        
        If cell.Value Like "[あいうえお]*" Then
            ReDim Preserve tmpArr(UBound(tmpArr) + 1)
            tmpArr(UBound(tmpArr)) = cell.Value
        End If
ContinueLoop:
    Next cell
    
    '--- 配列が空の場合は処理を終了 ---
    If UBound(tmpArr) = 0 Then
        MsgBox "抽出条件に一致するデータがありませんでした。", vbInformation
        Exit Sub
    End If
    
    '--- AutoFilter で抽出 ---
    criteria = tmpArr
    tgtList.AutoFilter Field:=2, _
                       Operator:=xlFilterValues, _
                       Criteria1:=criteria

End Sub

コード解説

説明
7CurrentRegion で見出し行を含む表全体を取得しています。
11–17Like "[あいうえお]*" により先頭が「あ・い・う・え・お」のセルだけを判定しています。判定結果を動的配列 tmpArr に格納します。
23–24条件に一致するデータが無い場合、ユーザーへメッセージを表示して処理を終了します。
27–29Operator:=xlFilterValues を用い、配列条件で一括抽出しています。

応用例

目的実装のヒント
“か行” を抽出したいLike "[かきくけこ]*" に変更します。
2 列目と 4 列目を同時に抽出条件にしたい2 回目以降の AutoFilter で別の Field を指定し、AND 条件を構築します。
条件に合致した行を別シートへコピーしたいtgtList.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Result").Range("A1") を追加します。

よくある質問

質問回答
条件配列の上限はいくつですか。Excel の AutoFilter に設定できる配列要素数は 1,000 項目までです。それ以上になる際はデータを分割して抽出してください。
テーブル (ListObject) 形式でも動作しますか。ListObject.DataBodyRangetgtList に設定すれば同じ手順で利用可能です。

まとめ

動的に生成した配列を AutoFilter に渡すことで、「あ行」のレコードだけを瞬時に抽出できます。まずはサンプルコードを実行し、B 列のデータが正しく抽出されることをご確認ください。行頭文字の判定パターンを変更すれば、ほかの行区分にも容易に対応できます。

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

この記事を書いた人

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

目次