Filter関数は、文字列型の配列の中から、指定された文字列を含む
(あるいは含まない)要素を取り出し、文字列型の配列として返します。
引数Compareで指定する比較モードはSplit関数の引数と同じ内容ですの
で、使用する定数に関してはそちらを参照してください。
構文 Filter(Sourcesrray, Match, Include, Compare)
設定項目 内容
Sourcesrray 抽出元の文字列型の1次元配列を指定 [省略不可]
Match 検索する文字列を指定する [省略可能]
Include Trueで検索文字列を含む要素を返し(True)、
Falseで検索文字列を含まない要素を返す [省略可能]
Compare 文字列式を比較するときの比較モードを指定 [省略可能]
次のサンプルは、Filter関数とSplit関数とJoin関数を組合わせて利用し、
区切り文字で分割された文字列データを、条件に一致する文字列データだけ
にする処理のサンプルです。
●サンプル●
Sub FilterSamp1()
Dim myAddress As String
Dim myArray() As String
Dim i As Integer
Dim myMsg As String
'---複数のセル範囲のアドレスを取得
myAddress = Application.InputBox( _
Prompt:="複数範囲を選択してください" & vbCr & "( [Ctrl]キー + 範囲選択 )" _
, Type:=8).Address
'---(1)Split関数で配列に格納
myArray = Split(myAddress, ",")
'---(2)文字列"A"を含むアドレスだけを残す
myArray = Filter(myArray, "A", True)
'---(3)Join関数で配列から文字列に戻す
myAddress = Join(myArray, ",")
If myAddress = "" Then
MsgBox "A列を含む範囲はありませんでした"
Exit Sub
Else
Range(myAddress).Select
MsgBox "A列を含むセル範囲 (" & myAddress & ") だけを選択しました"
End If
End Sub
●解説●
(1)のステートメントで、Split関数を利用して複数のセル範囲のアドレスを配列
に格納しています。(2)のステートメントではFilter関数を利用して、アドレスの
文字列にAを含む要素だけからなる配列に変更しています。その配列を、(3)のステ
ートメントで文字列に戻しています。
●ポイント●
Join関数、Split関数と同じく、Filter関数もExcel2000で追加された新機能です。
これら3つの関数は、文字列と文字列型の配列を操作する点で共通しており、組合わ
せて使用することも多いと思いますので、3つまとめて理解しておいてください。
|