Excel VBA | データ検証(Offset × 条件分岐)の黄金パターン集

Excel VBA VBA
スポンサーリンク

ここでは Offset × 条件分岐 を組み合わせて「セルの値を検証し、結果を隣列や下段に出力する」基本テンプレをまとめます。
入力チェック・エラー検出・判定ラベル付与など、実務で頻出する検証処理を一括整理しました。


基本パターン 10選

1. 数値判定(数値以外はエラー)

Dim r As Range
For Each r In Range("A2:A20")
    If IsNumeric(r.Value) Then
        r.Offset(0, 1).Value = "OK"
    Else
        r.Offset(0, 1).Value = "ERR"
    End If
Next r
VB

👉 数値かどうかを判定し、右隣に「OK/ERR」を出力。


2. 空白判定(空欄なら警告)

Dim r As Range
For Each r In Range("B2:B20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "空白"
    End If
Next r
VB

👉 空白セルを検出して右隣に「空白」と記録。


3. 範囲外判定(閾値チェック)

Dim r As Range
For Each r In Range("C2:C20")
    If r.Value < 0 Or r.Value > 100 Then
        r.Offset(0, 1).Value = "範囲外"
    End If
Next r
VB

👉 値が 0〜100 の範囲外なら「範囲外」と出力。


4. 文字列長チェック

Dim r As Range
For Each r In Range("D2:D20")
    If Len(r.Value) > 10 Then
        r.Offset(0, 1).Value = "長すぎ"
    End If
Next r
VB

👉 文字列が 10文字を超える場合「長すぎ」と出力。


5. 日付判定

Dim r As Range
For Each r In Range("E2:E20")
    If IsDate(r.Value) Then
        r.Offset(0, 1).Value = "日付OK"
    Else
        r.Offset(0, 1).Value = "日付ERR"
    End If
Next r
VB

👉 日付かどうかを判定して右隣に結果を出力。


6. 重複判定

Dim r As Range
For Each r In Range("F2:F20")
    If WorksheetFunction.CountIf(Range("F2:F20"), r.Value) > 1 Then
        r.Offset(0, 1).Value = "重複"
    End If
Next r
VB

👉 同じ値が複数ある場合「重複」と出力。


7. 特定文字含有チェック

Dim r As Range
For Each r In Range("G2:G20")
    If InStr(r.Value, "NG") > 0 Then
        r.Offset(0, 1).Value = "NG含む"
    End If
Next r
VB

👉 「NG」を含む文字列を検出。


8. 前回値との差分チェック

Dim r As Range
For Each r In Range("H3:H20")
    If r.Value - r.Offset(-1, 0).Value < 0 Then
        r.Offset(0, 1).Value = "減少"
    Else
        r.Offset(0, 1).Value = "増加/同値"
    End If
Next r
VB

👉 前行との差分を判定して右隣に出力。


9. 正規表現による形式チェック(例:郵便番号)

Dim r As Range, regEx As Object
Set regEx = CreateObject("VBScript.RegExp")
regEx.Pattern = "^\d{3}-\d{4}$"

For Each r In Range("I2:I20")
    If regEx.Test(r.Value) Then
        r.Offset(0, 1).Value = "形式OK"
    Else
        r.Offset(0, 1).Value = "形式ERR"
    End If
Next r
VB

👉 郵便番号形式(例:123-4567)を判定。


10. エラー値判定(#N/A など)

Dim r As Range
For Each r In Range("J2:J20")
    If IsError(r.Value) Then
        r.Offset(0, 1).Value = "エラー値"
    End If
Next r
VB

👉 セルがエラー値なら右隣に「エラー値」と出力。


✅ まとめ

  • Offset → 判定結果を隣列へ出力
  • 条件分岐 → 数値判定・空白判定・範囲外チェック・文字列長・日付・重複・正規表現など
  • 黄金パターン → 入力検証・エラー検出・ラベル付与を一括テンプレ化

💡 この「データ検証 × Offset × 条件分岐」パターン集を使えば、売上表・勤怠表・在庫表などの 入力チェックや品質管理 を自動化できます。

タイトルとURLをコピーしました