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

VBA Filter 関数

はじめに

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

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

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

構文

Filter(配列, フィルタ文字)

Filter(配列, フィルタ文字, 含む, 比較モード)

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

引数「比較モード」

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

解説

戻り値を受け取る変数は、String 型の動的配列か 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, "TEST")
Debug.Print(f(0)) ' エラー発生、要素が一つもないため

関連ページ