サイトについて      連絡先   検索

VBA Filter 関数

はじめに

Excel VBA マクロの Filter 関数を紹介します。

Filter 関数は、文字列の配列から指定した文字列だけを含む配列を返します。

文字列の配列を絞り込み (フィルタリング) したいときに使用します。

  • 目次
    • 構文
    • 解説
    • 使用例

構文

Filter(文字列型配列, フィルタ文字)
文字列型配列からフィルタ文字と一致する要素の配列を作成します。

Filter(文字列型配列, フィルタ文字, 含む, 比較モード)
フィルタ文字含む含まないか指定できます。比較モードで大文字と小文字を区別するか指定できます。

引数「文字列型」文字列型 (String) を指定します。
引数「フィルタ文字」フィルタリングする文字列を指定します。
引数「含む」省略できます。
True または省略: 引数「フィルタ文字」を含む配列を返します。
False: 引数「フィルタ文字」を含まない配列を返します。
引数「比較モード」省略できます。フィルタリングに大文字と小文字を区別するか指定します。
戻り値の型文字列型 (String) の配列

引数「比較モード」

単位 説明
vbBinaryCompare (既定)「大文字と小文字」、「半角と全角」、「ひらがなとカタカナ」を区別する。
vbTextCompare区別しない。

解説

戻り値を受け取る変数は、String 型の動的配列か Variant 型である必要があります。Variant 型の動的配列だとエラーが発生します。

作成される配列は動的配列で、最初のインデックスは0からスタートします。

引数「文字列型配列」には String 型または Variant 型の配列のみ指定できます。それ以外の配列を指定するとエラーが発生します。Variant 型の配列に文字列以外の値が入っているときは、文字列に変換してから処理をします。

引数「文字列型配列」には一次元配列のみ指定できます。二次元配列を指定するとエラーが発生します。

引数「文字列型配列」の要素の中に引数「フィルタ文字」と一致する部分がある要素で作成された配列を返します。部分一致なのであいうえおに対してあいでも一致しています。

引数「文字列型配列」に引数「フィルタ文字」が見つからなかったときは、要素数0の空の配列を返します。

使用例


Dim s(3) As String
s(0) = "ABC DEF"
s(1) = "abc 123"
s(2) = "123 ABC"
s(3) = "あいう 123"

Dim f() As String
f = Filter(s, "ABC")
Debug.Print(f(0)) ' "ABC DEF"
Debug.Print(f(1)) ' "123 ABC"

f = Filter(s, "ABC", False) ' フィルタ文字を含まない
Debug.Print(f(0)) ' "abc 123"
Debug.Print(f(1)) ' "あいう 123"

f = Filter(s, "ABC", True, vbTextCompare) ' 区別しない
Debug.Print(f(0)) ' "ABC DEF"
Debug.Print(f(1)) ' "abc 123"
Debug.Print(f(2)) ' "123 ABC"

f = Filter(s, "Tips")  
Debug.Print(UBound(f)) ' -1 要素なし
  
Dim v As Variant
v = Filter(s, "ABC")
Debug.Print(v(0)) ' "ABC DEF"
Debug.Print(v(1)) ' "123 ABC"

Dim va() As Variant
va = Filter(s, "ABC") ' エラー、Variant の動的配列は受け取れない
  • 目次
    • 構文
    • 解説
    • 使用例