Excel VBA | 検証・チェック(Offset × 条件分岐)の黄金パターン集

VBA
スポンサーリンク

ここでは Offset × 条件分岐 を組み合わせて「セルの値を検証 → 結果を隣列に出力」する黄金パターンをまとめます。
データ入力チェックや検証処理を自動化することで、表の品質を一瞬で向上させられます。


基本パターン 10選

1. 空欄チェック

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

👉 空欄なら「未入力」、入力済みなら「OK」。


2. 数値チェック

Dim r As Range
For Each r In Range("B2:B20")
    If IsNumeric(r.Value) Then
        r.Offset(0, 1).Value = "数値"
    Else
        r.Offset(0, 1).Value = "非数値"
    End If
Next r
VB

👉 数値かどうかを判定。


3. 日付チェック

Dim r As Range
For Each r In Range("C2:C20")
    If IsDate(r.Value) Then
        r.Offset(0, 1).Value = "日付"
    Else
        r.Offset(0, 1).Value = "非日付"
    End If
Next r
VB

👉 日付かどうかを判定。


4. 範囲チェック(100以上)

Dim r As Range
For Each r In Range("D2:D20")
    If IsNumeric(r.Value) And r.Value >= 100 Then
        r.Offset(0, 1).Value = "OK"
    Else
        r.Offset(0, 1).Value = "NG"
    End If
Next r
VB

👉 100以上かどうかを判定。


5. 文字列長チェック(10文字以内)

Dim r As Range
For Each r In Range("E2:E20")
    If Len(r.Value) <= 10 Then
        r.Offset(0, 1).Value = "OK"
    Else
        r.Offset(0, 1).Value = "長すぎ"
    End If
Next r
VB

👉 文字列の長さを判定。


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

Dim r As Range
For Each r In Range("F2:F20")
    If InStr(r.Value, "VIP") > 0 Then
        r.Offset(0, 1).Value = "含む"
    Else
        r.Offset(0, 1).Value = "含まない"
    End If
Next r
VB

👉 「VIP」を含むかどうかを判定。


7. 正負チェック

Dim r As Range
For Each r In Range("G2:G20")
    If IsNumeric(r.Value) Then
        If r.Value >= 0 Then
            r.Offset(0, 1).Value = "正"
        Else
            r.Offset(0, 1).Value = "負"
        End If
    End If
Next r
VB

👉 正の数か負の数かを判定。


8. 重複チェック

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

👉 重複データを判定。


9. 英字チェック

Dim r As Range
For Each r In Range("I2:I20")
    If r.Value Like "[A-Za-z]*" Then
        r.Offset(0, 1).Value = "英字"
    Else
        r.Offset(0, 1).Value = "非英字"
    End If
Next r
VB

👉 英字かどうかを判定。


10. 複合チェック(数値かつ100以上)

Dim r As Range
For Each r In Range("J2:J20")
    If IsNumeric(r.Value) And r.Value >= 100 Then
        r.Offset(0, 1).Value = "合格"
    Else
        r.Offset(0, 1).Value = "不合格"
    End If
Next r
VB

👉 数値かつ100以上なら「合格」。


✅ まとめ

  • Offset → 検証結果を隣列へ出力
  • 条件分岐 → 空欄判定・数値判定・日付判定・範囲判定・文字列判定など
  • 黄金パターン → 入力チェック・品質検証・エラー検出を一瞬で自動化

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

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