VBAで自動化 VBA一覧 セル・値の取得と貼り付け 部分一致

【VBA】Like演算子で複数条件を扱う方法

Excel VBA の Like 演算子は、文字列のパターンマッチングに役立つ強力なツールです。しかし、複数の条件を扱いたい場合、Like 演算子を単体で使用するだけでは対応できない場合があります。

Like 演算子を使った複数条件の処理方法について解説し、実務で役立つサンプルコードを紹介します。

複数条件を扱う基本的な方法

Like 演算子で複数条件をチェックするには、以下のような方法があります。【VBA】部分一致の処理をする方法:Like演算子

  1. Or を使用して複数条件を並べる
    複数のパターンに対して、いずれかが一致すれば良い場合に使用します。
  2. ループで条件を動的にチェックする
    条件のリストが多い場合や、条件が動的に変化する場合に有効です。
  3. 正規表現を併用する(高度なパターンマッチングが必要な場合)
    正規表現ライブラリを活用することで、複雑な条件を効率的に処理できます。

Orを使用した複数条件のチェック

文字列が複数の条件のいずれかに一致するかどうかをチェックする例です。

Sub CheckMultipleConditionsWithOr()

Dim str As String
str = "Test123"

If str Like "Test*" Or str Like "*123" Or str Like "Example*" Then

MsgBox "いずれかの条件に一致しました!"

Else

MsgBox "条件に一致しませんでした。"

End If

End Sub

解説

  • Test* は「Testで始まる文字列」に一致。
  • *123 は「123で終わる文字列」に一致。
  • Example* は「Exampleで始まる文字列」に一致。
  • 条件のいずれかが一致すれば True を返します。

配列とループを使用して動的にチェック

条件が多数ある場合や、コードの柔軟性を高めたい場合は、配列とループを使用する方法が有効です。【VBA】セルの値を変数配列に取得:ループ処理

Sub CheckMultipleConditionsWithArray()

Dim str As String
Dim patterns As Variant
Dim pattern As Variant
Dim isMatch As Boolean

str = "Example2024"
patterns = Array("Test*", "*123", "Example*")

isMatch = False

For Each pattern In patterns

If str Like pattern Then

isMatch = True

Exit For

End If

Next pattern

If isMatch Then

MsgBox "条件に一致しました!"

Else

MsgBox "条件に一致しませんでした。"

End If

End Sub

解説

  • patterns 配列に複数のパターンを格納。
  • For Each ループで各パターンに対して Like 演算子を適用。
  • 最初に一致した条件でループを終了して処理を高速化。

ワークシート内で複数条件を適用

指定した複数の条件に一致するセルに色を付ける例です。

【VBA】フォーマット設定:数値形式・フォント・背景色の一括/条件設定

Sub HighlightCellsWithMultipleConditions()

Dim ws As Worksheet
Dim cell As Range
Dim patterns As Variant
Dim pattern As Variant
Dim isMatch As Boolean

Set ws = ThisWorkbook.Worksheets("Sheet1")
patterns = Array("Error*", "*Warning", "Critical*")

For Each cell In ws.Range("A1:A100")

isMatch = False

For Each pattern In patterns

If cell.Value Like pattern Then

isMatch = True
Exit For

End If

Next pattern

If isMatch Then

cell.Interior.Color = RGB(255, 182, 193) ' ピンク色に設定

End If

Next cell

End Sub

ポイント

  • patterns 配列にエラーや警告を示すパターンを格納。
  • 各セルの値が条件に一致すれば色を変更。

条件が多い場合:ユーザー入力でパターンを設定

動的なパターンチェックのために、ユーザーが条件を指定できるようにする方法です。

Sub UserDefinedPatterns()

Dim ws As Worksheet
Dim cell As Range
Dim userInput As String
Dim patterns As Variant
Dim pattern As Variant
Dim isMatch As Boolean

Set ws = ThisWorkbook.Worksheets("Sheet1")

' ユーザーがパターンをカンマ区切りで入力
userInput = InputBox("検索したいパターンをカンマ区切りで入力してください。", "パターン入力", "Error*,*Warning,Critical*")
patterns = Split(userInput, ",")

For Each cell In ws.Range("A1:A100")

isMatch = False
For Each pattern In patterns

If cell.Value Like pattern Then

isMatch = True
Exit For

End If

Next pattern

If isMatch Then

cell.Interior.Color = RGB(173, 216, 230) ' 青色に設定

End If

Next cell

End Sub

解説

  • InputBox でユーザーがパターンを入力。
  • 入力された文字列を Split 関数で分割し、配列に格納。
  • 配列内の各パターンに対して Like 演算子を適用。

注意点

  1. 条件が多い場合の処理速度
    条件が多い場合は、効率を考慮して Exit For で早めにループを終了するようにしましょう。【VBA】Exit Forの入れ子(ネスト)する方法:For文
  2. 大文字・小文字の区別
    Like 演算子はデフォルトで大文字・小文字を区別しません。区別が必要な場合は、Option Compare Binary を使用します。【VBA】Option Compare 【Binary・Text】ステートメントの設定方法

まとめ

Like 演算子を使った複数条件のチェックは、柔軟なパターンマッチングが求められる場面で役立ちます。この記事で紹介した手法を以下のような場面で活用してみてください。

  • 複数の条件を動的に検証したい場合(配列やループを活用)
  • ワークシート内のデータを効率的にフィルタリングしたい場合
  • ユーザー入力をもとに条件を設定したい場合

    -VBAで自動化, VBA一覧, セル・値の取得と貼り付け, 部分一致