Vba でワイルドカードを使用する方法 (例付き)
VBA のLike演算子と次の組み込みワイルドカードを使用して、文字列内の特定のパターンを検索できます。
- * : 任意の数の文字に一致します
- ? : 単一の文字と一致します
- # : 1 桁に対応
- [] : 範囲内の任意の文字に一致します
次の例は、これらのワイルドカードを実際に使用する方法を示しています。
例 1: *ワイルドカードを使用して部分文字列を検索する
列 A に次の食品リストがあるとします。
次のマクロを作成して、列 A の各文字列で「ホット」部分文字列を検索し、その結果を列 B に表示できます。
Sub FindString()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *hot* " Then
Range(" B " & i) = " Contains hot "
Else
Range(" B " & i) = " Does Not Contain hot "
End If
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
例 2: ワイルドカード文字 * を使用して、パターンで終わる文字列を検索します
列 A に次のバスケットボール チーム名のリストがあるとします。
次のマクロを作成して、列 A で「ets」で終わる文字列を検索し、その結果を列 B に表示します。
Sub FindEndingString()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *ets " Then
Range(" B " & i) = " Ends in ets "
Else
Range(" B " & i) = " Does Not End in ets "
End If
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
例 3: ワイルドカード # を使用して数字を検索する
列 A に次の文字列リストがあるとします。
次のマクロを作成して、列 A で数値を含む文字列を検索し、結果を列 B に表示できます。
SubFindNumbers ()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *#* " Then
Range(" B " & i) = " Contains Numbers "
Else
Range(" B " & i) = " Does Not Contain Numbers "
End If
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
例 4: ワイルドカード [] を使用して複数の文字を検索する
列 A に次のバスケットボール チーム名のリストがあるとします。
次のマクロを作成して、列 A でチーム名のどこかに r、s、または t を含む文字列を検索し、結果を列 B に表示できます。
Sub FindSpecificLetters()
Dim i As Integer
For i = 2 To 10
If Range(" A " & i) Like " *[rt]* " Then
Range(" B " & i) = " Contains r, s, or t "
Else
Range(" B " & i) = " Does Not Contain r, s or t "
End If
Next i
End Sub
このマクロを実行すると、次の出力が表示されます。
注: VBA ワイルドカードの完全なドキュメントはここで見つけることができます。
追加リソース
次のチュートリアルでは、VBA を使用して他の一般的なタスクを実行する方法について説明します。
VBA: 文字列内の文字の出現を数える方法
VBA: 文字列に別の文字列が含まれているかどうかを確認する方法
VBA: 特定のテキストを含むセルを数える方法