ここからは 正規表現を使った高度な文字列判定 と 複数条件+文字列判定の複合処理 の VBA 実務テンプレートを紹介します。
正規表現を使った高度な文字列判定版
VBA では VBScript.RegExp を利用できます。これにより 部分一致・パターン判定 が柔軟に可能になります。
Sub RangeToArray_RegexPattern()
Dim ws As Worksheet
Dim rng As Range
Dim arr As Variant
Dim i As Long, j As Long
Dim regEx As Object
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("A1:C1000")
' Range → 配列
arr = rng.Value
' 正規表現オブジェクト作成
Set regEx = CreateObject("VBScript.RegExp")
regEx.IgnoreCase = True
regEx.Global = True
' 加工処理(正規表現判定)
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
If VarType(arr(i, j)) = vbString Then
' 例:メールアドレス判定
regEx.Pattern = "^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$"
If regEx.Test(arr(i, j)) Then
rng.Cells(i, j).Font.Color = vbBlue
End If
' 例:郵便番号(日本形式 123-4567)
regEx.Pattern = "^\d{3}-\d{4}$"
If regEx.Test(arr(i, j)) Then
rng.Cells(i, j).Interior.Color = vbYellow
End If
End If
Next j
Next i
' 書戻し
rng.Value = arr
End Sub
VB複数条件+文字列判定の複合処理版
数値条件と文字列条件を組み合わせて処理する例です。
Sub RangeToArray_MultiCondition_Regex()
Dim ws As Worksheet
Dim rng As Range
Dim arr As Variant
Dim i As Long, j As Long
Dim regEx As Object
Set ws = ThisWorkbook.Sheets("Sheet1")
Set rng = ws.Range("A1:C1000")
' Range → 配列
arr = rng.Value
' 正規表現オブジェクト
Set regEx = CreateObject("VBScript.RegExp")
regEx.IgnoreCase = True
' 複合条件処理
For i = LBound(arr, 1) To UBound(arr, 1)
For j = LBound(arr, 2) To UBound(arr, 2)
' 数値条件
If IsNumeric(arr(i, j)) Then
If arr(i, j) >= 1000 Then
rng.Cells(i, j).Interior.Color = vbRed
ElseIf arr(i, j) >= 500 Then
rng.Cells(i, j).Interior.Color = vbGreen
End If
End If
' 文字列条件(例:電話番号判定)
If VarType(arr(i, j)) = vbString Then
regEx.Pattern = "^\d{2,4}-\d{2,4}-\d{4}$"
If regEx.Test(arr(i, j)) Then
rng.Cells(i, j).Font.Bold = True
End If
End If
Next j
Next i
' 書戻し
rng.Value = arr
End Sub
VB実務での活用イメージ
- 正規表現判定 → メールアドレス、郵便番号、電話番号、日付フォーマットチェック
- 複合条件処理 → 「数値が閾値以上」かつ「文字列が特定パターンに一致」した場合に強調表示
👉 これで「データクレンジング+条件付き可視化」を一気に処理できます。
さらに応用すると「正規表現で NG ワードチェック」「複数条件でエラーログ抽出」なども可能です。
