Filter関数は配列から指定した文字列を含む配列だけを返します。
要素の検索をする場合や、フィルタリング(指定した文字列の要素数がどれくらいあるか)に使用します。
構文
Filter(SourceArray, Match, Include, Compare)
引数 | 内容 | 省略可否 | 規定値 | |
SourceArray | 検索対象の配列を指定(一次元配列以外はエラー) | 不可 | ||
Match | 検索する文字列 | 可 | ||
Include | TRUE | 検索文字列を含む要素を返す | 可 | TRUE |
FALSE | 検索文字列を含まない要素を返す | |||
Compare | vbBinaryCompare | 大文字/小文字、全角/半角、ひらがな/カタカナを区別する | 可 | vbBinaryCompare |
vbTextCompare | 大文字/小文字、全角/半角、ひらがな/カタカナを区別しない |
配列で条件に一致した要素を取得するサンプルコード
'■Filter関数で条件にあったデータを一次元配列に抽出する Sub sample_Array_Filter() Dim arr(2) As String Dim f As Variant arr(0) = "ABC" arr(1) = "123" arr(2) = "abc" '■バイナリモードで比較する=ABCのみ抽出 f = Filter(arr, "ABC", True, vbBinaryCompare) MsgBox f(0) '"ABC" '■テキストモードで比較する=ABC、abcを抽出 f = Filter(arr, "ABC", True, vbTextCompare) MsgBox f(0) ' "ABC" MsgBox f(1) ' "abc" '■テキストモードでABCもしくはabcではないものを抽出=123を抽出 f = Filter(arr, "ABC", False, vbTextCompare) MsgBox f(0) ' "123" '■配列内に指定文字列を含むかどうか判別する If (UBound(f) <> -1) Then MsgBox "指定文字列を含む配列が存在する" Else MsgBox "指定文字列を含む配列が存在しない" End If End Sub
その他
- Filter関数は一次元配列のみです。二次元配列や配列以外の場合はエラーが発生します。
■エラー内容
実行時エラー13 型が一致しません
実行時エラー13 型が一致しません
検索時に一致するデータがない場合、空の配列(Ubound関数では-1と表示)が戻ってきます。
関連記事
一次元/二次元配列が空かどうか判定する【ExcelVBA】
一次元/二次元配列の要素数の最小値を取得する【Lbound関数】
一次元/二次元配列の要素数の最大値を取得する【Ubound関数】
「二次元配列を動的に行数(一次元目)を増やす」をパーツ化する【ExcelVBA】
コメント