ここでは Offset × 条件分岐 × IfEmpty を組み合わせて「空欄セルを検出し、補完値を隣列や下段に出力する」黄金テンプレをまとめます。
入力漏れや欠損データを自動補完する処理は、売上表・勤怠表・在庫表などの実務で頻出します。
基本パターン 10選
1. 空欄を「前行の値」で補完
Dim r As Range
For Each r In Range("A3:A20")
If IsEmpty(r.Value) Then
r.Value = r.Offset(-1, 0).Value
End If
Next r
VB👉 空欄を前行の値で補完。
2. 空欄を「次行の値」で補完
Dim r As Range
For Each r In Range("B2:B19")
If IsEmpty(r.Value) Then
r.Value = r.Offset(1, 0).Value
End If
Next r
VB👉 空欄を次行の値で補完。
3. 空欄を「固定値」で補完
Dim r As Range
For Each r In Range("C2:C20")
If IsEmpty(r.Value) Then
r.Value = "未入力"
End If
Next r
VB👉 空欄を「未入力」で補完。
4. 空欄を「平均値」で補完
Dim r As Range
For Each r In Range("D2:D20")
If IsEmpty(r.Value) Then
r.Value = WorksheetFunction.Average(Range("D2:D20"))
End If
Next r
VB👉 空欄を列全体の平均値で補完。
5. 空欄を「中央値」で補完
Dim r As Range
For Each r In Range("E2:E20")
If IsEmpty(r.Value) Then
r.Value = WorksheetFunction.Median(Range("E2:E20"))
End If
Next r
VB👉 空欄を列全体の中央値で補完。
6. 空欄を「0」で補完
Dim r As Range
For Each r In Range("F2:F20")
If IsEmpty(r.Value) Then
r.Value = 0
End If
Next r
VB👉 空欄をゼロで補完。
7. 空欄を「右隣の値」で補完
Dim r As Range
For Each r In Range("G2:G20")
If IsEmpty(r.Value) Then
r.Value = r.Offset(0, 1).Value
End If
Next r
VB👉 空欄を右隣の値で補完。
8. 空欄を「左隣の値」で補完
Dim r As Range
For Each r In Range("H2:H20")
If IsEmpty(r.Value) Then
r.Value = r.Offset(0, -1).Value
End If
Next r
VB👉 空欄を左隣の値で補完。
9. 空欄を「上段の平均」で補完
Dim r As Range
For Each r In Range("I3:I20")
If IsEmpty(r.Value) Then
r.Value = WorksheetFunction.Average(Range("I2:I" & r.Row - 1))
End If
Next r
VB👉 空欄を上段の平均値で補完。
10. 空欄を「条件付き補完」
Dim r As Range
For Each r In Range("J2:J20")
If IsEmpty(r.Value) Then
If r.Offset(0, -1).Value = "VIP" Then
r.Value = 1000
Else
r.Value = 500
End If
End If
Next r
VB👉 左隣の条件に応じて補完値を変える。
✅ まとめ
- Offset → 前行・次行・隣列の値を参照して補完
- 条件分岐 → 空欄判定+条件付き補完
- IfEmpty → 欠損データを自動補完(固定値・平均・中央値・ゼロなど)
- 黄金パターン → 前行補完・次行補完・隣列補完・条件付き補完で柔軟に対応
💡 この「データ補完 × Offset × 条件分岐 × IfEmpty」パターン集を使えば、売上表・勤怠表・在庫表などの 欠損データ補完 を自動化できます。

