Excel VBAを使って、「文字列の中に特定の語句が含まれているかを調べたい」という場面はよくあります。
例えば、セルの内容に「○○」という言葉が含まれていたら処理を実行したい、といった場合です。
今回は、そうした条件分岐に役立つ InStr() 関数の基本的な使い方をご紹介いたします。
InStr関数とは?
InStr 関数は、指定した文字列の中に別の文字列が含まれているかどうかを判定するための関数です。
構文は次のようになります。
InStr(文字列1, 文字列2)
- 文字列1の中に、文字列2が存在する位置を返します。
- 含まれていれば1以上の値、含まれていなければ0を返します。
使用例:特定の語句が含まれているかを調べる
以下は、「ノルウェーの森」という文字列に「森」という語句が含まれているかをチェックする例です。
Sub CheckIfTextExists()
Dim raretsu As String
Dim shitei As String
raretsu = "ノルウェーの森"
shitei = "森"
' raretsu の中に shitei が含まれているか確認
If InStr(raretsu, shitei) > 0 Then
MsgBox "含まれています。", vbInformation
Else
MsgBox "含まれていません。確認してください。", vbExclamation
End If
End Sub
結果と処理の流れ
InStr("ノルウェーの森", "森")の戻り値は 7(7文字目に”森”がある)- よって
InStr(...) > 0の条件は True となり、「含まれています。」と表示されます
よくある誤り:引数の順番に注意
InStr 関数では、**最初の引数が「調べられる側(対象)」**で、**2つ目が「調べたい文字列」**です。
誤って以下のように記述してしまうと、正しい結果が得られません。
If InStr(shitei, raretsu) > 0 Then ' ← 順番が逆
正しくは、下記のように**「対象文字列, 探す文字列」**の順で指定してください。
If InStr(raretsu, shitei) > 0 Then
応用:セルの中身に特定語句が含まれていたら色を変える
以下のようにすれば、特定の語が含まれていたセルのフォントを赤色に変更するといった処理も可能です。
Sub ChangeFontColorIfFound()
Dim targetCell As Range
Set targetCell = Range("A1")
If InStr(targetCell.Value, "重要") > 0 Then
targetCell.Font.Color = RGB(255, 0, 0) ' 赤文字にする
End If
End Sub
まとめ
InStr() 関数を使えば、特定の語句が含まれているかどうかを簡単にチェックできます。
条件分岐(If文)と組み合わせれば、以下のような処理が実現可能です。
- 含まれていれば警告を出す
- 特定のセルの書式を変更する
- 特定文字列がある行だけ別処理を行う
文字列操作はVBAで非常によく使われる処理ですので、InStr の使い方はぜひ覚えておきましょう。
技術書の購入コストを抑えてスキルアップするなら

ここまで読んでいただきありがとうございます。最後に宣伝をさせてください。
プログラミングの技術書や参考書は、1冊3,000円〜5,000円するものも多く、出費がかさみがちです。Kindle Unlimitedであれば、月額980円で500万冊以上の書籍が読み放題となります。
気になる言語の入門書から、アルゴリズム、基本設計の専門書まで、手元のスマホやPCですぐに参照可能です。現在は「30日間の無料体験」や、対象者限定の「3か月499円プラン」なども実施されています。まずはご自身のアカウントでどのようなオファーが表示されるか確認してみてください。
