「離れたセル × 自動化パターン」は、実務で爆速処理を実現するための鉄板テクニック。ここでは 条件一致セルの抽出 → 複数シート一括処理 → 配列で高速化 の流れを VBA でまとめてみます。
1. 条件に一致するセルだけ自動で集めて処理
Sub 金額ゼロセル赤枠()
Dim ws As Worksheet
Dim rng As Range, c As Range
For Each ws In ThisWorkbook.Worksheets
' 金額列(例:C列)を対象
Set rng = ws.Range("C2:C" & ws.Cells(ws.Rows.Count, "C").End(xlUp).Row)
For Each c In rng
If c.Value = 0 Then
c.BorderAround ColorIndex:=3, Weight:=xlMedium ' 赤枠
End If
Next c
Next ws
End Sub
VB👉 条件一致セルだけを検出して処理。背景色や「NG」文字列なども同じパターンで応用可能。
2. 複数シート × 複数セル × 複数列を一括処理
Sub 全シート売上集計()
Dim ws As Worksheet
Dim total As Double
total = 0
For Each ws In ThisWorkbook.Worksheets
' 各シートの「売上列(D列)」を合計
total = total + Application.WorksheetFunction.Sum(ws.Range("D2:D" & ws.Cells(ws.Rows.Count, "D").End(xlUp).Row))
Next ws
' 結果をMasterシートに出力
Sheets("Master").Range("A1").Value = "売上合計"
Sheets("Master").Range("B1").Value = total
End Sub
VB👉 全シートの同じ列を一括処理。初期化や集約も同じパターンで可能。
3. 配列と組み合わせて高速処理(爆速)
Sub 配列で高速変換()
Dim ws As Worksheet
Dim rng As Range
Dim arr As Variant
Dim i As Long
Set ws = ActiveSheet
Set rng = ws.Range("B2:B1000") ' 対象範囲
' 一括読み込み
arr = rng.Value
' 高速ループで値変換
For i = 1 To UBound(arr, 1)
If arr(i, 1) = "NG" Then
arr(i, 1) = "OK"
End If
Next i
' 一括書き戻し
rng.Value = arr
End Sub
VB👉 離れたセルを「配列」に読み込んで処理 → 書き戻し。セルごとのループより数十倍速い。
実務で超使えるパターンまとめ
- 条件一致セルだけ処理 → 「金額=0」「背景色=黄色」「文字列=NG」など
- 複数シート一括処理 → 「売上列集計」「A列非空セル集約」「全シートの特定セル初期化」
- 配列で爆速処理 → 離れたセルをまとめて読み込み → 高速ループ → 一括書き戻し
練習課題
- 全シートの「A列非空セル」を配列に集めて1枚のシートにまとめる
- 背景色が黄色のセルだけを検出してクリアするコードを書く
- 「エラーチェック NG」のセルを一括で「修正済」に置き換えるコードを作る
こうしたパターンを組み合わせると、実務で超使える「離れたセル × 自動化」爆速処理フレームワークが完成します。

