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

【VBA】ワイルドカードの使用方法

Excel VBA では、Like 演算子やフィルタ機能などでワイルドカードを使用すると、文字列のパターンマッチングが簡単に行えます。ワイルドカードを使用することで、部分一致や特定の形式に合致するデータを効率的に検索・処理できます。

この記事では、Excel VBA でのワイルドカードの基本的な使い方、実務での活用例と注意点を解説します。

ワイルドカードとは?

ワイルドカードは、文字列の検索や比較で特定のパターンを表す記号です。Excel VBA では、以下のワイルドカードが使用可能です。

ワイルドカード説明使用例
*任意の長さの任意の文字列A* → Aで始まる文字列
?任意の1文字A?C → Aから始まりCで終わる3文字
#任意の1桁の数字#123 → 0123, 9123など
[文字群]指定した文字のいずれかに一致[AB]C → AC, BC
[!文字群]指定した文字以外に一致[!AB]C → CC, DCなど
[文字-文字]範囲指定された文字に一致[A-Z] → AからZまでの文字

基本的なパターンマッチング

Like 演算子を使用して文字列が特定のパターンに一致するかを確認します。

【VBA】部分一致の処理をする方法:Like演算子

Sub BasicWildcardExample()

Dim str As String
str = "Apple123"

If str Like "Apple*" Then

MsgBox "文字列は 'Apple' で始まります。"

Else

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

End If

End Sub

解説

  • パターン Apple* は、「Appleで始まる任意の文字列」を意味します。
  • 例: Apple123ApplePie は一致しますが、Banana123 は一致しません。

数値を含む文字列をチェック

ワイルドカード # を使用して、特定の形式の数値を含む文字列をチェックします。

Sub CheckNumericPattern()

Dim str As String
str = "123-456"

If str Like "###-###" Then

MsgBox "文字列は正しい形式です。"

Else

MsgBox "文字列は形式に一致しません。"

End If

End Sub

解説

  • パターン ###-### は、「3桁の数字-3桁の数字」に一致します。
  • 例: 123-456 は一致しますが、12-3456abc-123 は一致しません。

ワークシート内での部分一致検索

列Aのセルで「Error」で始まる文字列を持つセルを黄色に色付けします。

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

Sub HighlightCellsWithWildcard()

Dim ws As Worksheet
Dim cell As Range

Set ws = ThisWorkbook.Worksheets("Sheet1")

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

If cell.Value Like "Error*" Then

cell.Interior.Color = RGB(255, 255, 0) ' 黄色に設定

End If

Next cell

End Sub

ポイント

  • パターン Error* は、「Errorで始まる任意の文字列」に一致します。
  • 例: Error123ErrorMessage が該当します。

【VBA】For Each ステートメントの使い方と活用例

複数条件のパターンマッチング

複数のパターンを同時にチェックする場合、Or を使用するか配列を活用します。

【VBA】IF文のandとorを組み合わせた複数条件

【Orを使用】

Sub CheckMultiplePatterns()

Dim str As String
str = "Warning123"

If str Like "Error*" Or str Like "Warning*" Then

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

Else

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

End If

End Sub


【配列を使用】

Sub CheckPatternsWithArray()

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

解説

注意点

  1. 大文字・小文字の区別
    Like 演算子はデフォルトで大文字・小文字を区別しません。区別が必要な場合は、Option Compare Binary を使用します。
  2. ワイルドカードの誤用に注意
    特殊文字(例: *, ?, #)をそのまま一致させたい場合は、ダブルクォーテーション("")が必要です。
  3. 正規表現との違い
    Like 演算子は正規表現ほど柔軟ではありません。複雑なパターンが必要な場合は、正規表現を検討してください。

まとめ

Excel VBA のワイルドカードは、データの検索やパターンマッチングに便利です。以下のポイントを押さえて効果的に活用しましょう。

  • *, ?, # などの基本的なワイルドカードを活用。
  • 複数条件や部分一致検索に応用。

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