配列の要素のうち指定した文字列を含む(または含まない)ものを返します。
使用例
例1
コード
Sub Func_Filter() Dim corporation As Variant, company As Variant corporation = Array("株式会社田中", "合資会社YOSHIDA", "山田株式会社", _ "一般社団法人さいとう", "特定非営利活動法人Yoshida") company = Filter(corporation, "会社") MsgBox Join(company, "◇") End Sub
出力
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
出力
第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
出力
第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
出力
第4引数をvbBinaryCompareとした場合または省略した場合、バイナリモードでの比較となり「大文字と小文字」「全角と半角」「ひらがなとカタカナ」を区別します(同一視しません)。
書式
Filter(配列,検索対象文字列[,検索種別,比較モード])
検索対象文字列を空文字("")に、検索種別をTrueするとすべての要素が抽出されます(同じくFalseの場合は1つも抽出されません)。
検索種別として指定できる値(定数と数値のいずれか)と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。
検索種別(定数) | 検索種別(数値) | 意味 |
---|---|---|
True | -1 | 指定した文字列を含む要素を抽出する |
False | 0 | 指定した文字列を含まない要素を抽出する |
比較モードとして指定できる値(定数と数値のいずれか)と意味は次のとおりです。省略した場合は-1を指定したものとみなされます。
比較モード(定数) | 比較モード(数値) | 意味 |
---|---|---|
vbUseCompareOption | -1 | Option Compare ステートメントの設定により比較 |
vbBinaryCompare | 0 | バイナリモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別する(同一視しない)) |
vbTextCompare | 1 | テキストモードで比較(大文字と小文字、全角と半角、ひらがなとカタカナは区別しない(同一視する)) |
vbDatabaseCompare | 2 | データベースの情報に基づいて比較 |
備考
-