Excel VBA | Offset × Resize × ForEach の 黄金 100 パターン集

VBA
スポンサーリンク

行ループ(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 を組み合わせると「ブロック単位の行処理」へ発展できます。

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