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 演算子を使用して文字列が特定のパターンに一致するかを確認します。
Sub BasicWildcardExample()
Dim str As String
str = "Apple123"
If str Like "Apple*" Then
MsgBox "文字列は 'Apple' で始まります。"
Else
MsgBox "条件に一致しません。"
End If
End Sub
解説
- パターン
Apple*は、「Appleで始まる任意の文字列」を意味します。 - 例:
Apple123やApplePieは一致しますが、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-3456やabc-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で始まる任意の文字列」に一致します。 - 例:
Error123やErrorMessageが該当します。
複数条件のパターンマッチング
複数のパターンを同時にチェックする場合、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
解説
- 配列に複数のパターンを格納し、それぞれをチェック。【VBA】For文:配列の使用方法
- 一致するパターンが見つかればセルの色を変更。
注意点
- 大文字・小文字の区別
Like演算子はデフォルトで大文字・小文字を区別しません。区別が必要な場合は、Option Compare Binaryを使用します。 - ワイルドカードの誤用に注意
特殊文字(例:*,?,#)をそのまま一致させたい場合は、ダブルクォーテーション("")が必要です。 - 正規表現との違い
Like演算子は正規表現ほど柔軟ではありません。複雑なパターンが必要な場合は、正規表現を検討してください。
まとめ
Excel VBA のワイルドカードは、データの検索やパターンマッチングに便利です。以下のポイントを押さえて効果的に活用しましょう。
*,?,#などの基本的なワイルドカードを活用。- 複数条件や部分一致検索に応用。