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

VBA
スポンサーリンク

Offset × Resize × ForEach の「黄金パターン集」について

大量データ処理や表操作を Offset(相対位置指定) × Resize(範囲拡張) × For Each(繰り返し処理) で組み合わせると、Excel VBAの実務効率が飛躍的に上がります。


カテゴリ別パターン

1. 隣列処理パターン

  • 隣列にコピー
For Each cell In Range("A2:A100")
    cell.Offset(0, 1).Value = cell.Value
Next cell
VB
  • 隣列に加工結果を書き込み
For Each cell In Range("B2:B100")
    cell.Offset(0, 1).Value = "加工:" & cell.Value
Next cell
VB

2. 表拡張パターン

  • 表を右隣に複製
Dim tbl As Range
Set tbl = Range("A1:D10")
tbl.Offset(0, tbl.Columns.Count).Value = tbl.Value
VB
  • 表を下方向に拡張
Dim tbl As Range
Set tbl = Range("A1:D10")
tbl.Offset(tbl.Rows.Count, 0).Resize(tbl.Rows.Count, tbl.Columns.Count).Value = tbl.Value
VB

3. 自動入力パターン

  • 連番を下方向に展開
Dim i As Long
For Each cell In Range("A2:A101")
    cell.Value = cell.Row - 1
Next cell
VB
  • 日付を自動入力
Dim d As Date
d = DateSerial(2025, 11, 1)
For Each cell In Range("B2:B31")
    cell.Value = d
    d = d + 1
Next cell
VB

4. 集計パターン

  • 累計を隣列に出力
Dim sumVal As Double
sumVal = 0
For Each cell In Range("C2:C100")
    sumVal = sumVal + cell.Value
    cell.Offset(0, 1).Value = sumVal
Next cell
VB
  • 平均を隣列に出力
Dim total As Double, count As Long
For Each cell In Range("D2:D100")
    total = total + cell.Value
    count = count + 1
    cell.Offset(0, 1).Value = total / count
Next cell
VB

5. 条件付き処理パターン

  • 条件一致で隣列にフラグ
For Each cell In Range("E2:E100")
    If cell.Value > 1000 Then
        cell.Offset(0, 1).Value = "OK"
    Else
        cell.Offset(0, 1).Value = "NG"
    End If
Next cell
VB
  • 条件一致で行全体を色付け
For Each cell In Range("F2:F100")
    If cell.Value = "完了" Then
        cell.EntireRow.Interior.Color = vbYellow
    End If
Next cell
VB

6. 動的範囲パターン

  • 最終行まで自動処理
Dim lastRow As Long
lastRow = Cells(Rows.Count, 1).End(xlUp).Row
For Each cell In Range("A2:A" & lastRow)
    cell.Offset(0, 1).Value = cell.Value * 2
Next cell
VB
  • Resizeで範囲を拡張して一括処理
Dim rng As Range
Set rng = Range("B2").Resize(10, 3)
For Each cell In rng
    cell.Value = "X"
Next cell
VB

✅ まとめ

  • Offset: 相対位置指定で「隣列・下方向」へ展開
  • Resize: 表サイズを動的に指定
  • For Each: 大量データを効率的にループ処理

💡 この「カテゴリ別テンプレ」を組み合わせれば、隣列処理・表拡張・自動入力・集計・条件付き処理・動的範囲の6カテゴリだけで数十パターンが作れます。

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