ここでは 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」パターン集を使えば、売上表・勤怠表・在庫表などの データクレンジング+補完+フォーマット統一 を一瞬で自動化できます。


