Excel VBA | データ検証+整形(Offset × 条件分岐 × Replace × Format × IfEmpty)の複合黄金パターン集

Excel VBA VBA
スポンサーリンク

ここでは Offset × 条件分岐 × Replace × Format × IfEmpty を組み合わせて「入力データを検証 → 不要文字を置換 → フォーマット統一 → 欠損補完」まで一気通貫で処理する黄金パターンをまとめます。
これにより データクレンジング+補完+整形 を同時に自動化できます。


基本パターン 10選

1. 空白セルを「未入力」で補完+Trim整形

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 = Trim(r.Value)
    End If
Next r
VB

👉 空白は「未入力」、入力済みは前後スペース除去。


2. 全角スペースを半角に置換+空欄補完

Dim r As Range
For Each r In Range("B2:B20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "N/A"
    Else
        r.Offset(0, 1).Value = Replace(r.Value, " ", " ")
    End If
Next r
VB

👉 空欄は「N/A」、全角スペースは半角に整形。


3. 数値をゼロ埋め4桁に整形+空欄は0000

Dim r As Range
For Each r In Range("C2:C20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "0000"
    ElseIf IsNumeric(r.Value) Then
        r.Offset(0, 1).Value = Format(r.Value, "0000")
    End If
Next r
VB

👉 空欄は「0000」、数値はゼロ埋め。


4. 日付を「YYYY/MM/DD」に整形+空欄は今日の日付

Dim r As Range
For Each r In Range("D2:D20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = Format(Date, "yyyy/mm/dd")
    ElseIf IsDate(r.Value) Then
        r.Offset(0, 1).Value = Format(r.Value, "yyyy/mm/dd")
    End If
Next r
VB

👉 空欄は今日の日付、入力済みは統一フォーマット。


5. 時刻を「HH:MM」に整形+空欄は「00:00」

Dim r As Range
For Each r In Range("E2:E20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "00:00"
    ElseIf IsDate(r.Value) Then
        r.Offset(0, 1).Value = Format(r.Value, "hh:nn")
    End If
Next r
VB

👉 空欄は「00:00」、入力済みは時刻フォーマット。


6. NGワードを「※」に置換+空欄は「未入力」

Dim r As Range
For Each r In Range("F2:F20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "未入力"
    Else
        r.Offset(0, 1).Value = Replace(r.Value, "NG", "※")
    End If
Next r
VB

👉 空欄は「未入力」、NGワードは「※」に置換。


7. 英字を大文字化+空欄は「UNKNOWN」

Dim r As Range
For Each r In Range("G2:G20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "UNKNOWN"
    Else
        r.Offset(0, 1).Value = UCase(r.Value)
    End If
Next r
VB

👉 空欄は「UNKNOWN」、入力済みは大文字化。


8. 英字を小文字化+空欄は「none」

Dim r As Range
For Each r In Range("H2:H20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "none"
    Else
        r.Offset(0, 1).Value = LCase(r.Value)
    End If
Next r
VB

👉 空欄は「none」、入力済みは小文字化。


9. 数値をカンマ区切り整形+空欄は0

Dim r As Range
For Each r In Range("I2:I20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = 0
    ElseIf IsNumeric(r.Value) Then
        r.Offset(0, 1).Value = Format(r.Value, "#,##0")
    End If
Next r
VB

👉 空欄は0、入力済みはカンマ区切り。


10. 特定文字列を置換+空欄はデフォルト値

Dim r As Range
For Each r In Range("J2:J20")
    If IsEmpty(r.Value) Then
        r.Offset(0, 1).Value = "DEFAULT"
    Else
        r.Offset(0, 1).Value = Replace(r.Value, "東京", "TOKYO")
    End If
Next r
VB

👉 空欄は「DEFAULT」、入力済みは「東京」を「TOKYO」に置換。


✅ まとめ

  • Offset → 整形結果を隣列へ出力
  • 条件分岐 → 空欄判定・数値判定・日付判定・文字列判定
  • Replace → 不要文字や表記揺れを置換
  • Format → 数値・日付・文字列を統一フォーマット化
  • IfEmpty → 欠損データを補完(未入力・0・DEFAULTなど)
  • 黄金パターン → 検証+整形+補完を一括テンプレ化

💡 この「データ検証+整形 × Offset × 条件分岐 × Replace × Format × IfEmpty」パターン集を使えば、売上表・勤怠表・在庫表などの データクレンジング+補完+フォーマット統一 を一瞬で自動化できます。

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