【Excel VBA】特定の文字列が含まれているか判定する方法を紹介【Like】

Excel
スポンサーリンク

今回は特定の文字列が含まれているか判定する方法を紹介したいと思います。

スポンサーリンク

任意の文字列が含まれているか判定する方法

それでは早速コードを紹介します。
検索先の文字列base_str検索対象の文字列target_strが含まれているか判定するコードです。

Sub check_TargetStr()
    
    Dim base_str                As String
    Dim target_str              As String
    
    '検索先の文字列
    base_str = "はりぼなブログにようこそ!"
    
    '検索対象の文字列
    target_str = "はりぼな"
    
    If base_str Like "*" & target_str & "*" Then
        MsgBox "「" & target_str & "」が見つかりました。"
    Else
        MsgBox "「" & target_str & "」が見つかりませんでした。"
    End If
    
End Sub

実行するとbase_strtarget_strの中身に応じて処理が変化します。
含まれていれば見つかった旨のメッセージが表示され、含まれていなければ見つからなかった旨のメッセージが表示されます。

文字列が含まれていた場合
文字列が含まれていなかった場合
スポンサーリンク

コードの解説

それではコードについてざっくり解説します。
ポイントになるのはメインの処理になるif~Likeになります。

If~Likeについて

If~Likeはざっくり言うと指定した条件が部分一致しているか判定する処理になります。

今回の例ではbase_strtarget_strが含まれているか判定したいので、base_str Like target_strとしています。
しかし、実際にIf base_str Like target_strとしても部分一致させることができず、完全一致かどうかでの判定になってしまいます

'検索先の文字列
base_str = "はりぼなブログにようこそ!"
    
'検索対象の文字列
target_str = "はりぼな"

'部分一致にならず完全一致かどうかの判定になる(Falseになる)
If base_str Like target_str Then
~

これを回避する為にはワイルドカードを付与する必要があります。

ワイルドカードとは何ぞや」ってなると思いますが、ざっくり不特定多数の文字列のことで、これを文字列に付与すれば部分一致で判定できる、と思っておけばとりあえずOKです。

ワイルドカードにも色々種類があるのですが、今回は*(アスタリスク:半角)を使用します。
0文字以上の不特定多数の文字列のことで、これを付与すれば文字列の前後に何かしらの文字列が入っていても問題なく判定ができるようになります

付与の仕方も特に難しくなく、文字列の任意の位置に*を付けてあげるだけです。

'target_strの前後に*を付与すれば部分一致で判定できる
If base_str Like "*" & target_str & "*" Then
...

ちなみに文字列の前にだけ付けると指定の文字列で終わっているかが判定でき後ろにだけ付けると指定の文字列で始まっているかが判定できます

'base_strにtarget_strが含まれているか判定
base_str = "はりぼなブログです"
target_str = "はりぼな"

'base_strがtarget_strで始まっているか判定
If base_str Like target_str & "*" Then
~
End If

'base_strの最後にtarget_strがあるか判定
If base_str Like "*" & target_str Then
~
End If

文字列が含まれていない時に処理したい場合

今回は文字列が含まれている場合の処理を紹介しましたが、逆に「特定の文字列が含まれていない時に処理したい」なんて場合もあると思います。

そういった時はNotを使用すれば実現できます。
書き方も簡単で、条件式をNot(~)で囲むだけです。

'条件式をNot(~)で囲む
'base_strにtarget_strが含まれていないか判定
If Not(base_str Like "*" & target_str & "*") Then
    'target_strがなかった時に処理する
Else
    'target_strがあった時に処理する
End if

こうすると条件式を満たさない時にTrue部分の処理が実行されるようになります。

要はNotを付けると処理が反転する、といった感じです。

スポンサーリンク

まとめ

今回は特定の文字列が含まれているか判定する方法を紹介しました。

文字列操作の際に多用する処理になるので、是非覚えておきましょう!

このブログではVBAに関する記事を不定期で投稿していますので、是非ご覧ください!

コメント

タイトルとURLをコピーしました