Django Girls and Boys 備忘録

Python、Selenium、Django、java、iPhoneアプリ、Excelマクロなどで気付いたこと、覚えておきたいことなどを載せていきます。

【Excelマクロ入門】部分一致の達人!Like演算子でパターン検索を極めよう

Excelマクロ(VBA)で文字を扱っていると、
「これ、特定のパターンに合っているかどうか判定したい…」
という瞬間が必ず出てきます。

例えば——

  • 文字列が「A」で始まるか調べたい

  • メールアドレスっぽい形式か判定したい

  • 数字だけでできているか見たい

  • 「ABC●●」のような“あいまい一致”をしたい

そんなときに強力な味方になるのが
Like(ライク)演算子 です!

「関数」ではなく“演算子”ですが、
ほぼ関数のように使えるため、多くの人が「Like関数」と呼んでいます。


🔍 Likeとは?できることを一言でいうと…

「パターン(ワイルドカード)で一致判定する」演算子です。

たとえば:

 
If "Apple" Like "A*" Then  ' Aで始まるならTrue

 

* が「なんでもOK」というワイルドカードになり、
Excel関数の COUNTIFSEARCH の感覚で使えます。


🎨 ワイルドカード一覧(これさえ覚えれば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

これらを組み合わせることで、
「部分一致」「パターン一致」が自由自在になります✨


💡 基本のコード例

 
 
Sub LikeDemo()
    Dim txt As String

    txt = "Report_2025.xlsx"
    ' 末尾が .xlsx かどうか
    If txt Like "*.xlsx" Then
        Debug.Print "Excelファイルです"
    End If
    ' 先頭が「Rep」で始まるか
    If txt Like "Rep*" Then
        Debug.Print "レポートファイルです"
    End If

End Sub
 

Like "*.xlsx" のように使うのが典型パターンです。


🧩 実用例:数字だけで構成されているか判定

Function IsOnlyNumber(value As String) As Boolean
    IsOnlyNumber = value Like "#*"
End Function

 

ただし——
数字3桁だけ、などより厳しい条件も書けます👇

 
If value Like "###" Then ' 3桁の数字

 

 
こういう柔軟さがLikeの魅力です!

📧 応用例:メールアドレスっぽい文字列か調べる

 
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 など直感的
簡易バリデーション(数字のみ、形式チェック) ###, *.* など便利
ファイル名やコード名のフィルタ 自動化で頻出