Excel VBA | Range→配列→加工→高速書戻し の実務テンプレ

VBA
スポンサーリンク

ここからは 正規表現を使った高度な文字列判定複数条件+文字列判定の複合処理 の 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 ワードチェック」「複数条件でエラーログ抽出」なども可能です。

VBA
スポンサーリンク
シェアする
@lifehackerをフォローする
スポンサーリンク
タイトルとURLをコピーしました