【VBA】Filter関数を使用して、String型の配列から指定した文字列を含む要素のみを抽出する

前提

配列のインデックス開始値を1にするため「Option Base 1」を記載

サンプルプログラムの概要

・シート上に設定されている「DocID列」を取得しString型の配列へ格納


・作成したString型の配列から指定した文字列を含む要素のみを抽出する
・抽出した結果をイミディエイトウィンドウへ出力する

サンプルプログラム

Option Base 1

Sub filterSample()

    Const START_ROW As Integer = 2
    Const DOCID_COLUMN As Integer = 3
    Dim endRow As Integer
    
    '最終行を取得
    endRow = Cells(START_ROW, DOCID_COLUMN).End(xlDown).row
    
    'String型の配列を作成
    Dim arrayDocId() As String
    ReDim arrayDocId(endRow - START_ROW)
    Dim i As Integer
    For i = 1 To endRow - START_ROW
        arrayDocId(i) = Cells(i + START_ROW, DOCID_COLUMN)
    Next i
    
    '指定した文字列(ここでは1500008)を含む要素のみを抽出
    Dim arrayDocIdTarget As Variant
    arrayDocIdTarget = Filter(sourcearray:=arrayDocId, Match:="1500008", include:=True, compare:=vbBinaryCompare)
    
    '指定した文字列を含む要素のみが抽出されているか確認
    Dim docIdStr As Variant
    For Each docIdStr In arrayDocIdTarget
        Debug.Print docIdStr
    Next docIdStr
    
End Sub

実行結果

タイトルとURLをコピーしました