ExcelVBA セルや変数に特定の文字列が含まれているか判定する3つの方法

 

Excel VBA  セルの値や変数の中に、特定の文字列が含まれているか判定する方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る

 

Excel VBA 文字列が含まれているか判定|シーン

以下のシーンで利用します。

1.指定のキーワードを含むセルを検索する(例:「エラー」を含むセルを赤色にする)

2.ファイル名やシート名の判定を行う(例:「売上」が含まれるシートのみ処理する)

3.文字列の一部を条件としてデータを抽出する(例:「〇〇株式会社」が含まれる顧客リストを抽出する)

 

マクロができる人が少ない職場
数年後にはあなたより効率的な後輩にポジションを奪われるかもしれません。
👉 詳細はこちら

 

Excel VBA 文字列が含まれているか判定方法

3つの方法で特定の文字を含むか確認

1. InStr関数を使う(一般的な方法)

2. Like演算子を使う(ワイルドカード利用可能)

3. 正規表現(RegExp)を使う(複雑なパターン)

 

Excel VBA 文字列が含まれているか判定サンプルコード

InStr関数を使う(特定の文字を含むか判定する)

Option Explicit

Sub CheckString_InStr()
    Dim text As String
    text = "今日は晴れです"
    
    ' "晴れ" を含むか判定
    If InStr(1, text, "晴れ") > 0 Then
        MsgBox "「晴れ」が含まれています!"
    Else
        MsgBox "「晴れ」は含まれていません。"
    End If
End Sub

 

ポイント

・InStr(開始位置, 検索対象, 検索文字列)` の形で使う
・含まれていれば 1以上の数値 が返る(位置を示す)
・含まれていなければ 0 が返る

 

利用シーン

・セルの中に特定の文字が含まれるかチェック
・文字列の一部を検索して分岐処理

 

Like演算子を使う方法(ワイルドカード(* や ?)を使って判定)

Option Explicit

Sub CheckString_Like()
    Dim text As String
    text = "Excel VBA入門"

    ' "Excel" を含むか判定
    If text Like "*Excel*" Then
        MsgBox "「Excel」が含まれています!"
    Else
        MsgBox "「Excel」は含まれていません。"
    End If
End Sub

 

ポイント

・* は 0文字以上の任意の文字列 に一致
・? は 任意の1文字 に一致
・大文字・小文字を区別しない(Option Compare Binary を使えば区別可能)

 

利用シーン

・「Excelで始まる」や「VBAを含む」などのパターン検索
・ファイル名やシート名を判定する処理

 

正規表現(RegExp)を使う方法(より高度な検索(大文字小文字区別、複数条件))

Option Explicit

Sub CheckString_RegExp()
    Dim text As String
    Dim regEx As Object
    text = "注文番号: A12345"

    ' 正規表現オブジェクトの作成
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = "A\d{5}" ' "A"の後に数字5桁
    regEx.IgnoreCase = False ' 大文字小文字を区別する
    regEx.Global = False ' 最初にマッチした1つだけ判定

    ' 判定
    If regEx.Test(text) Then
        MsgBox "パターンに一致しました!"
    Else
        MsgBox "パターンに一致しません。"
    End If

    ' オブジェクトの解放
    Set regEx = Nothing
End Sub

 

ポイント

・正規表現パターン を使って細かく検索可能
・\d{5} → 5桁の数字 を表す
・大文字・小文字を区別できる

 

利用シーン

・「A12345」のような特定の形式をチェック
・メールアドレスや電話番号のパターンを検証

 

「いまは、きちんと勉強しなくてもなんとかなる」は今だけ?
そのままいけば、AIの進歩で1年後には時代遅れの人になっているかも。

👉 詳細はこちら

 

注意点

1. InStrは大文字小文字を区別する

"Excel" と "excel" は 区別される(LCase() で小文字統一すると対応可能)

If InStr(1, LCase(text), "excel") > 0 Then

2. Like演算子は大文字小文字を区別しない

Like "*excel*"` でも `"Excel"` にマッチする

3. 正規表現(RegExp)はオブジェクトの解放を忘れない

Set regEx = Nothing でメモリを解放する

 

Excel VBA 文字列が含まれているか判定まとめ

方法 メリット デメリット 適した用途
InStr関数 シンプルで使いやすい 大文字小文字を区別する 簡単な部分一致検索
Like演算子 ワイルドカードが使える 複雑なパターンには向かない 曖昧な検索(ファイル名チェックなど)
RegExp(正規表現) 高度な検索が可能 記述がやや難しい 形式チェック(注文番号、メールアドレス)

 

Excel VBAで自動化するコードのベースを習得したい方におすすめ!

VBAエキスパート資格は、日常業務でExcelを多用し、手動作業を減らしたいと考えている方には価値あるものです。

ExcelVBAエキスパートベーシック
仕事の効率をあげるためにExcelVBAを利用する人が対象の問題集です。


ExcelVBAエキスパートスタンダード

ExcelVBAの開発を仕事にする人が対象の問題集です。

 

Excel  VBA エキスパート資格について知りたい方は、下記「Excel VBAスキルアップを目指すなら知っておきたいVBAエキスパート」をご確認ください。

 

Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!