行ループ(For Each × Offset 基本テンプレ集)
ここでは For Each × Offset を組み合わせて「行単位で処理する」パターンをまとめます。
各例は「行のセルを基準にして隣列や上下行へ書き込む」流れになっています。
21. 各行の右隣に判定結果を書く
For Each cell In Range("A2:A10")
cell.Offset(0, 1).Value = (cell.Value >= 50)
Next cell
VB👉 A列の値が50以上なら右隣に TRUE、未満なら FALSE。
22. 行ごとに合計を右端に書く
Dim rng As Range
For Each rng In Range("B2:D10").Rows
rng.Cells(1, rng.Columns.Count).Offset(0, 1).Value = WorksheetFunction.Sum(rng)
Next rng
VB👉 B〜D列の合計を右端列のさらに右隣に出力。
23. 前行との差分を右隣へ
Dim r As Range
For Each r In Range("C3:C10") ' 3行目から
r.Offset(0, 1).Value = r.Value - r.Offset(-1, 0).Value
Next r
VB👉 C列の値と前行との差分を右隣に書く。
24. 次行との比較結果を書き込む
Dim r As Range
For Each r In Range("D2:D9") ' 次行が存在する範囲
r.Offset(0, 1).Value = (r.Value = r.Offset(1, 0).Value)
Next r
VB👉 D列の値と次行の値が一致しているかを右隣に出力。
25. ループ中のセルを 2 行下に書き戻す
For Each cell In Range("E2:E10")
cell.Offset(2, 0).Value = cell.Value
Next cell
VB👉 E列の値を「2行下」にコピー。
26. 行単位でエラー内容を右隣に記録
Dim r As Range
For Each r In Range("F2:F10")
If Not IsNumeric(r.Value) Then
r.Offset(0, 1).Value = "ERROR: 数値以外"
End If
Next r
VB👉 F列に数値以外があれば右隣にエラー内容を記録。
27. 行を条件ごとに色分け
Dim r As Range
For Each r In Range("G2:G10")
If r.Value > 1000 Then
r.EntireRow.Interior.Color = vbYellow
Else
r.EntireRow.Interior.Color = vbWhite
End If
Next r
VB👉 G列の値が1000超なら行全体を黄色に。
28. 行の先頭セルに番号を書き込む
Dim r As Range, i As Long
i = 1
For Each r In Range("H2:H10").Rows
r.Cells(1, 1).Value = i
i = i + 1
Next r
VB👉 H列の範囲をループし、行頭に連番を付与。
29. 条件一致行だけ下段へコピー
Dim r As Range, pasteRow As Long
pasteRow = 20
For Each r In Range("I2:I10").Rows
If r.Cells(1, 1).Value = "OK" Then
r.Copy Destination:=Cells(pasteRow, 1)
pasteRow = pasteRow + 1
End If
Next r
VB👉 I列が「OK」の行だけを下段(20行目以降)へコピー。
30. 行ごとに補助列(N列目)へタグを付与
Dim r As Range
For Each r In Range("J2:J10").Rows
r.Cells(1, 14).Value = "TAG_" & r.Row
Next r
VB👉 J列の範囲をループし、N列(14列目)にタグを付与。
✅ まとめ
- For Each × Offset → 行単位で隣列や上下行へ処理
- Rowsコレクションを使うと「行全体」をまとめて扱える
- 条件分岐や集計と組み合わせると「判定・差分・色分け・コピー」など実務で頻出の処理が可能
💡 この「行ループ基本10パターン」をベースに、さらに Resize を組み合わせると「ブロック単位の行処理」へ発展できます。


