本記事の内容
Excel VBAマクロであいまいな条件比較を行う方法をご紹介
→ ワイルドカードを使用
こんな方におすすめ
- Excel VBAマクロで使用できる様々な条件比較を知りたい方
- Excel VBAマクロで表現できる処理の幅を広げたい方
- VBA勉強中の方
ワイルドカードとは?【一覧あり】
ワイルドカードとは、
特定の文字、文字列の代用として使用できる記号
です。
ワイルドカードには下記の種類があります。
<ワイルドカード一覧>
記号 | 意味 | 使用例 | 結果 |
* | 0文字以上の任意の文字列 | “Sample” Like “*a*” → “a”を含む文字列 | TRUE |
? | 任意の1文字 | “Sample” Like “S?????” → “S”で始まる6文字の文字列 | TRUE |
# | 任意の1数字 | “12S” Like “##S” → 最初の2文字が数字で”S”で終わる文字列 | TRUE |
[ ] | [ ]内に指定した1文字 | “S” Like “[SAMPLE]” → S, A, M, P, L, Eのいずれかの1文字 | TRUE |
[!] | [ ]内に指定した文字以外の1文字 | “S” Like “[!SAMPLE]” → S, A, M, P, L, E以外の1文字 | TRUE |
[-] | [ ]内に指定した範囲の1文字 | “E” Like “[A-G]” → A~Gまでの1文字 | TRUE |
使用例 : ワイルドカードを使用して文字列を比較
ワイルドカードを用いた比較には、「Like」演算子を使用します。
構文は下記の通りです。
Like演算子の構文
文字列 Like 文字パターン
ワイルドカードを用いたソースコードの例は下記の通りです。
<サンプルコード>
Sub sample()
'比較する文字列を定義
Dim text As String
'*を用いた比較
text = "Sample"
If text Like "*a*" Then
'Sampleはaを含むためこちらが選ばれる
Debug.Print text & "はaを含みます"
Else
Debug.Print text & "はaを含みません"
End If
'?を用いた比較
text = "Sample"
If text Like "S??" Then
Debug.Print text & "は先頭の文字がSの3文字の文字列です"
Else
'Sampleは6文字のためこちらが選ばれる
Debug.Print text & "は先頭の文字がSの3文字の文字列ではありません"
End If
'#を用いた比較
text = "12S"
If text Like "##S" Then
'12Sは最初に2文字の数字、最後がSの3文字のためこちらが選ばれる
Debug.Print text & "は最初に2文字の数字、最後がSの3文字の文字列です"
Else
Debug.Print text & "は最初に2文字の数字、最後がSの3文字の文字列ではありません"
End If
'[]を用いた比較
text = "E"
If text Like "[ABC]" Then
Debug.Print text & "はA, B, Cのいずれかです"
Else
'EはA, B, Cのいずれでもないためこちらが選ばれる
Debug.Print text & "はA, B, Cのいずれでもありません"
End If
'[!]を用いた比較
text = "E"
If text Like "[!ABC]" Then
'EはA, B, Cのいずれでもないためこちらが選ばれる
Debug.Print text & "はA, B, Cのいずれでもありません"
Else
Debug.Print text & "はA, B, Cのいずれかです"
End If
'[-]を用いた比較
text = "E"
If text Like "[A-G]" Then
'EはA~Gのいずれかのためこちらが選ばれる
Debug.Print text & "はA~Gのいずれかです"
Else
Debug.Print text & "はA~Gのいずれでもありません"
End If
End Sub
<マクロ実行結果>

以上がワイルドカードを使用してあいまいな条件で比較する方法となります。
ここまでご覧いただきありがとうございました。
初心者におすすめの書籍はこちら
VBAに詳しくなりたい方におすすめの書籍はこちら