
Excel VBA セルの値や変数の中に、特定の文字列が含まれているか判定する方法。使い方や注意点など、サンプルコードをもとに具体的に解説します。
Excel VBAの資格でキャリアアップ!
就活や転職で有利になるVBAエキスパート資格を解説!
👉 VBAエキスパート資格のメリットを詳しく知る
目次
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
・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エキスパート資格を解説!