Filter関数

 配列の要素のうち指定した文字列を含む(または含まない)ものを返します。

使用例

例1

コード

Sub Func_Filter()

Dim corporation As Variant, company As Variant

    corporation = Array("株式会社田中", "合資会社YOSHIDA", "山田株式会社", _
                        "一般社団法人さいとう", "特定非営利活動法人Yoshida")

    company = Filter(corporation, "会社")

    MsgBox Join(company, "◇")

End Sub

出力
f:id:accs2014:20190128161815p:plain:left:w350

 Filter関数で「会社」という文字列を含む要素のみを取り出し、Join関数で結合して出力しています。第2引数で検索の方法を指定できますが、省略した場合は「指定した文字列を含む」という条件になります(ただし正確にはOption Compare ステートメントの設定によります)。
 指定した文字列が含まれる位置はどこでも構いません。

例2

コード

Sub Func_Filter()

Dim corporation As Variant, not_company As Variant

    corporation = Array("株式会社田中", "合資会社YOSHIDA", "山田株式会社", _
                        "一般社団法人さいとう", "特定非営利活動法人Yoshida")

    not_company = Filter(corporation, "会社", False)

    MsgBox Join(not_company, "◇")

End Sub

出力
f:id:accs2014:20190128161811p:plain:left:w350

 第3引数をFalseとした場合「指定した文字列を含まない」という条件で要素を取り出します。

例3

コード

Sub Func_Filter()

Dim corporation As Variant, yoshida_corp As Variant

    corporation = Array("株式会社田中", "合資会社YOSHIDA", "山田株式会社", _
                        "一般社団法人さいとう", "特定非営利活動法人Yoshida")

    yoshida_corp = Filter(corporation, "YOSHIDA", True, vbTextCompare)

    MsgBox Join(yoshida_corp, "◇")

End Sub

出力
f:id:accs2014:20190128161808p:plain:left:w350

 第4引数をvbTextCompareとした場合または省略した場合、テキストモードでの比較となり「大文字と小文字」「全角と半角」「ひらがなとカタカナ」は区別しません(同一視します)。

例4

コード

Sub Func_Filter()

Dim corporation As Variant, yoshida_corp As Variant

    corporation = Array("株式会社田中", "合資会社YOSHIDA", "山田株式会社", _
                        "一般社団法人さいとう", "特定非営利活動法人Yoshida")

    yoshida_corp = Filter(corporation, "YOSHIDA", True, vbBinaryCompare)

    MsgBox Join(yoshida_corp, "◇")

End Sub

出力
f:id:accs2014:20190128161805p:plain:left:w200

 第4引数をvbBinaryCompareとした場合または省略した場合、バイナリモードでの比較となり「大文字と小文字」「全角と半角」「ひらがなとカタカナ」を区別します(同一視しません)。

書式

Filter(配列,検索対象文字列[,検索種別,比較モード])

 検索対象文字列を空文字("")に、検索種別をTrueするとすべての要素が抽出されます(同じくFalseの場合は1つも抽出されません)。

 検索種別として指定できる値(定数と数値のいずれか)と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。

検索種別(定数)検索種別(数値)意味
True-1指定した文字列を含む要素を抽出する
False0指定した文字列を含まない要素を抽出する

 比較モードとして指定できる値(定数と数値のいずれか)と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。

比較モード(定数)比較モード(数値)意味
vbUseCompareOption-1Option Compare ステートメントの設定により比較
vbBinaryCompare0バイナリモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない))
vbTextCompare1テキストモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する))
vbDatabaseCompare2データベースの情報に基づいて比較

備考

 -