Filter関数

Filter関数は配列から指定した文字列を含む要素を取得します。指定した文字列があった場合は、それらを配列として返却します。指定した文字列がなかった場合は、空の配列を返却します。Filter関数は要素は返しますが、配列の位置は返しません。

指定文字列がある配列の要素の位置を調べたい場合は「VBAで配列に指定文字列が存在する位置を調べる」をご参照ください。

構文

Function Filter(SourceArray, Match As String, [Include As Boolean = True], [Compare As VbCompareMethod = vbBinaryCompare]) As Variant

SourceArray 検索対象の配列を指定します。

1次元配列に限ります。

1次元配列でない場合はエラーになります。

Match 検索する文字列を指定します。
Include
省略可
検索文字列を含む配列の要素を返す場合はTrue、含まない配列の要素を返す場合はFalseを返します。

省略時はTrueになります。

Compare
省略可
VbCompareMethod列挙型で比較モードを指定します。

省略時はOption Compareステートメントでの設定内容が採用されます。

Option Compareステートメントが未設定の場合はバイナリモード(vbBinaryCompare)が指定されます。

VbCompareMethod列挙型

定数 内容
vbBinaryCompare 0 バイナリモード(大文字と小文字、全角と半角、ひらがなとカタカナを区別する)
vbTextCompare 1 テキストモード(大文字と小文字、全角と半角、ひらがなとカタカナを区別しない)

省略時はバイナリモードで検索されます。

バイナリモードとテキストモードの違いは、大文字と小文字、全角と半角、ひらがなとカタカナを区別するかしないかです。

バイナリモードの場合は区別しますが、テキストモードの場合は区別しません。

戻り値 検索結果を配列で返します。

検索で一致するデータがない場合は空の配列を返します。

 

サンプルコード

要素数が6の1次元配列から指定文字があるデータをFilter関数で抽出するサンプルコードです。

実行結果
[abc]
[  b  ]
[  B  ]
[  B  ]

Filter関数の用途

Filter関数の用途ですが、必要なデータが配列の中にいくつあるのか、ということを調べる場合には便利に利用できます。

Filter関数の戻り値は、検索一致データがあってもなくても必ず配列を返します。

データがない場合も空の配列を返します。

これを利用すると、戻り値の配列の要素数をUBound関数で取得した値に+1したものが検索に一致したデータ数になります。