
Excelマクロ(VBA)で文字を扱っていると、
「これ、特定のパターンに合っているかどうか判定したい…」
という瞬間が必ず出てきます。
例えば——
-
文字列が「A」で始まるか調べたい
-
メールアドレスっぽい形式か判定したい
-
数字だけでできているか見たい
-
「ABC●●」のような“あいまい一致”をしたい
そんなときに強力な味方になるのがLike(ライク)演算子 です!
「関数」ではなく“演算子”ですが、
ほぼ関数のように使えるため、多くの人が「Like関数」と呼んでいます。
🔍 Likeとは?できることを一言でいうと…
たとえば:
If "Apple" Like "A*" Then ' Aで始まるならTrue
* が「なんでもOK」というワイルドカードになり、
Excel関数の COUNTIF や SEARCH の感覚で使えます。
🎨 ワイルドカード一覧(これさえ覚えればOK)
| ワイルドカード | 意味 | 例 |
|---|---|---|
* |
0文字以上の任意の文字列 | "ABCD" Like "A*" → True |
? |
任意の1文字 | "A1C" Like "A?C" → True |
# |
任意の1桁の数字 | "A5C" Like "A#C" → True |
[ABC] |
A,B,C のどれか | "B" Like "[ABC]" → True |
[A-Z] |
A〜Zのいずれか | "G" Like "[A-Z]" → True |
"[!A-Z]" |
A〜Z 以外の1文字 | "1" Like "[!A-Z]" → True |
これらを組み合わせることで、
「部分一致」「パターン一致」が自由自在になります✨
💡 基本のコード例
Like "*.xlsx" のように使うのが典型パターンです。
🧩 実用例:数字だけで構成されているか判定
Function IsOnlyNumber(value As String) As Boolean
IsOnlyNumber = value Like "#*"
End Function
ただし——
数字3桁だけ、などより厳しい条件も書けます👇
If value Like "###" Then ' 3桁の数字
📧 応用例:メールアドレスっぽい文字列か調べる
Function IsEmail(str As String) As Boolean
IsEmail = str Like "*@*.*"
End Function
「簡易チェック」としては十分便利です。
🎯 CSVのデータをフィルタしたいときにも便利
Sub FilterCode()
Dim code As String
code = "ABC123"
' ABCで始まる型番だけ処理したい
If code Like "ABC*" Then
Debug.Print "対象の型番です"
End If
End Sub
🪄 まとめ:Likeが向いているシーン
| シーン | Why Like? |
|---|---|
| 文字の“部分一致”が必要 | ワイルドカード最強 |
| 「●●で始まる」「●●で終わる」判定 | A*, *Z など直感的 |
| 簡易バリデーション(数字のみ、形式チェック) | ###, *.* など便利 |
| ファイル名やコード名のフィルタ | 自動化で頻出 |
リンク