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

VBA
スポンサーリンク

列ループ(For Each × Resize 基本テンプレ集)

ここでは For Each × Resize を組み合わせて「列単位で処理する」パターンをまとめます。
列ごとの集計・フォーマット・チェックなど、実務でよく使う処理を一気に整理しました。


31. 列ごとに最大値をヘッダ下に記録

Dim col As Range
For Each col In Range("A:D").Columns
    col.Cells(2, 1).Value = WorksheetFunction.Max(col)
Next col
VB

👉 各列の最大値を「ヘッダの下(2行目)」に記録。


32. 各列のデータ件数を自動集計

Dim col As Range
For Each col In Range("A:D").Columns
    col.Cells(2, 1).Value = WorksheetFunction.Count(col)
Next col
VB

👉 各列の件数をヘッダ下に出力。


33. 列全体を Resize で縦方向に一括

Dim col As Range
For Each col In Range("A:D").Columns
    col.Resize(Rows.Count, 1).Interior.Color = vbYellow
Next col
VB

👉 各列全体を一括で色付け(例: 黄色)。


34. 各列に一括フォーマット

Dim col As Range
For Each col In Range("A:D").Columns
    col.NumberFormat = "#,##0"
Next col
VB

👉 各列を「カンマ区切り数値」フォーマットに。


35. 列の先頭行に属性を書き込む

Dim col As Range
For Each col In Range("A:D").Columns
    col.Cells(1, 1).Value = "属性_" & col.Column
Next col
VB

👉 各列の先頭セルに「属性名」を付与。


36. 列の最終行へ集計結果

Dim col As Range, lastRow As Long
For Each col In Range("A:D").Columns
    lastRow = Cells(Rows.Count, col.Column).End(xlUp).Row
    Cells(lastRow + 1, col.Column).Value = WorksheetFunction.Sum(col)
Next col
VB

👉 各列の最終行の下に合計値を出力。


37. 列の平均を右隣へ

Dim col As Range
For Each col In Range("A:D").Columns
    col.Offset(0, 1).Cells(1, 1).Value = WorksheetFunction.Average(col)
Next col
VB

👉 各列の平均値を右隣列の先頭に出力。


38. 列データのクリーニング

Dim col As Range, cell As Range
For Each col In Range("A:D").Columns
    For Each cell In col.Cells
        cell.Value = Trim(cell.Value) ' 前後の空白を除去
    Next cell
Next col
VB

👉 各列のデータを「Trim」でクリーニング。


39. 列ごとに異常値をマーキング

Dim col As Range, cell As Range
For Each col In Range("A:D").Columns
    For Each cell In col.Cells
        If IsNumeric(cell.Value) And cell.Value < 0 Then
            cell.Interior.Color = vbRed
        End If
    Next cell
Next col
VB

👉 各列の「負の値」を赤色でマーキング。


40. 列のデータ型チェックを付与

Dim col As Range
For Each col In Range("A:D").Columns
    If WorksheetFunction.Count(col) = col.Cells.Count Then
        col.Cells(1, 1).Value = "数値列"
    Else
        col.Cells(1, 1).Value = "文字列列"
    End If
Next col
VB

👉 各列のデータ型を判定し、先頭セルに「数値列/文字列列」と記録。


✅ まとめ

  • For Each col In Range(…).Columns → 列単位で処理
  • Resize → 縦方向に範囲を拡張して一括処理
  • WorksheetFunction → 集計や統計を簡単に実装

💡 この「列ループ基本10パターン」をベースに、さらに Offset を組み合わせると「隣列に集計結果を出す」「補助列を作る」など応用が広がります。

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