
Excel VBA セルの値や変数の中に、特定の文字列が含まれているか判定する方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。
📌 「これ、自動化できたらラクなのに…」と思ったこと、ありませんか?
実はその作業、Excelマクロで簡単に自動化できるかもしれません。
「でもマクロって難しそう…」という方のために、完全初心者向けの入門記事をご用意しました!
👇実務で“そのまま使える”テンプレ付きで、コピペするだけ!
初心者向けエクセルマクロの作り方を解説|コピペOK実務テンプレ付き
目次
Excel VBA 文字列が含まれているか判定|シーン
以下のシーンで利用します。
1.指定のキーワードを含むセルを検索する(例:「エラー」を含むセルを赤色にする)
2.ファイル名やシート名の判定を行う(例:「売上」が含まれるシートのみ処理する)
3.文字列の一部を条件としてデータを抽出する(例:「〇〇株式会社」が含まれる顧客リストを抽出する)
Excel VBA 文字列が含まれているか判定方法
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
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
・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」のような特定の形式をチェック
・メールアドレスや電話番号のパターンを検証
自分の実力を客観的にチェックしたい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集をご用意しました。
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で自動化するコードのベースが習得できる解説書」
Excel VBAエキスパートベーシックとスタンダード、どちらを選べばいいか判断が難しい…。そんな方のために、自分に合ったスタート地点がわかる無料のExcelVBAベーシック選択問題集を用意しました。