文字列が含むかどうか関数とVBAの両方で調べる:Excelでよく使うフレーズ

セルの文字列に指定した文字列が含まれるかどうか、Excel関数とVBAで判定する方法です。




Homeに戻る > Excelでよく使うフレーズへ
  • 関数で判定する場合、IF関数とCOUNTIF関数を組み合わせて行います。検索する文字列はワイルドカードにすることで、含まれるかどうか判定できます。
  • VBAで判定する場合、セルの上からDOループを使い総当たりで調べます。含まれるかどうかはINSTR関数を使用します。

B列の市町村名に、C2セルの文字列が含まれているかどうか調べます。
市町村名にC2セルの文字列が含まれているかどうか調べる

Excel関数で文字列が含むかどうか調べる

下記のIF関数とCOUNTIF関数を使用した式を入力します。
=IF(COUNTIF(B4,"*" & $C$2 & "*"),"○","×")
  • "*" & $C$2 & "*" はワイルドカードで、前後に*(アスタリスク)を付ければ前後にどんな文字があってもという意味で、含まれていればということになります。
  • $C$2にしているのは、検索する文字列のセルは1つなので、コピーしても変わらないように絶対番地にしています。
  • COUNTIF関数は見つかった個数を返します。見つからなければ0が返るので、FALSEと同値になります。
  • IF関数でCOUNTIF関数がTRUE(1以上)を返せば〇を表示し、FALSE(0)を返せば×を表示します。
IF関数とCOUNTIF関数を使用した式を入力する

下のセルにコピーすれば文字列判定の完了です。
下のセルにコピーする

Excel VBAで文字列が含むかどうか調べる

シートに下のような検索開始ボタンを配置します。
検索開始ボタンを配置する

ボタンのクリックイベントに、VBAを入力します。
ボタンのクリックイベントに、VBAを入力する

Option Explicit

Private Sub CommandButton1_Click()
    Dim lrow As Long
    
    lrow = 4
    
    Do
        If Cells(lrow, 2) <> "" Then
            If InStr(1, Cells(lrow, 2), Range("C2")) > 0 Then
                Cells(lrow, 4) = "〇"
            Else
                Cells(lrow, 4) = "×"
            End If
        Else
            Exit Do
        End If
        lrow = lrow + 1
    Loop
End Sub
  • 変数 lrowは行番号を保存します。
  • Doループで、B列の文字列が空白ならループを抜けます。
  • INSTR関数でC2セルの文字列が含むかどうか判定し、1以上なら〇、0なら×を表示します。
  • 次の行を調べます。
シートに戻り検索開始ボタンをクリックすると、判定結果が表示されます。
検索開始ボタンをクリックする

複数文字が含むかどうか調べても問題なく実行できます。
複数文字が含むかどうか調べる



■■■
このサイトの内容を利用して発生した、いかなる問題にも一切責任は負いませんのでご了承下さい
■■■
当ホームページに掲載されているあらゆる内容の無許可転載・転用を禁止します


Copyright (c) Excel-Excel ! All rights reserved