数式セルの処理
Excel VBAで「数式セルだけ処理したい」「フィルタで絞ったセルだけ対象にしたい」といった場面はよくあります。
このとき便利なのが SpecialCells と AutoFilter です。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- SpecialCells
xlCellTypeFormulas→ 数式セルだけを対象にできる。xlCellTypeVisible→ フィルタや非表示を無視して「見えているセル」だけ対象。
- AutoFilter
- シートにフィルタを設定して、条件に合う行だけを表示。
- その後
SpecialCells(xlCellTypeVisible)で「絞り込まれたセル」だけ処理。
テンプレ1:数式セルだけ色付け
Sub HighlightFormulaCells()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:D20")
Dim formulaRg As Range
On Error Resume Next
Set formulaRg = rg.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not formulaRg Is Nothing Then
formulaRg.Interior.Color = vbYellow
End If
End Sub
VB- ポイント:
- 範囲内の「数式セル」だけ黄色に。
- 数値や文字が入っているセルは対象外。
テンプレ2:数式セルだけ値に変換(数式を固定値化)
Sub ConvertFormulaToValue()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:D20")
Dim formulaRg As Range
On Error Resume Next
Set formulaRg = rg.SpecialCells(xlCellTypeFormulas)
On Error GoTo 0
If Not formulaRg Is Nothing Then
formulaRg.Value = formulaRg.Value
End If
End Sub
VB- ポイント:
- 数式セルだけ「値」に変換。
- 計算結果を固定したいときに便利。
テンプレ3:AutoFilter+可視セルだけ処理
Sub FilterAndProcessVisibleCells()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:C20")
' A列で「東京」だけフィルタ
rg.AutoFilter Field:=1, Criteria1:="東京"
Dim visRg As Range
On Error Resume Next
Set visRg = rg.SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not visRg Is Nothing Then
visRg.Interior.Color = vbGreen
End If
' フィルタ解除
ws.AutoFilterMode = False
End Sub
VB- ポイント:
- フィルタで「東京」だけ表示。
- 可視セルだけ緑色に。
テンプレ4:フィルタ後の数式セルだけ処理
Sub FilterAndFormulaCells()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:D20")
' B列で「>100」をフィルタ
rg.AutoFilter Field:=2, Criteria1:=">100"
Dim formulaRg As Range
On Error Resume Next
Set formulaRg = rg.SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not formulaRg Is Nothing Then
formulaRg.Font.Color = vbRed
End If
' フィルタ解除
ws.AutoFilterMode = False
End Sub
VB- ポイント:
- フィルタで絞り込み → さらに数式セルだけ赤文字に。
SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible)の組み合わせ。
例題で練習
'例1:数式セルだけ色付け
Sub Example1()
HighlightFormulaCells
End Sub
'例2:数式セルを値に変換
Sub Example2()
ConvertFormulaToValue
End Sub
'例3:フィルタ後の可視セルだけ処理
Sub Example3()
FilterAndProcessVisibleCells
End Sub
'例4:フィルタ後の数式セルだけ処理
Sub Example4()
FilterAndFormulaCells
End Sub
VB初心者向けポイント
- SpecialCellsは強力 → 数式セルや可視セルだけを簡単に抽出できる。
- エラー処理が必須 → 対象セルがない場合はエラーになるので
On Error Resume Nextを入れる。 - AutoFilterと組み合わせると便利 → 条件で絞り込んだ後に「見えているセル」だけ処理可能。
- 実務で便利 → 数式セルの固定化、フィルタ後の集計や色付けなど。
👉 この「SpecialCells / AutoFilter × 数式セルテンプレ」を覚えておけば、Excel VBAで フィルタ後の数式セル処理や表示セルだけの操作 を高速に実務へ応用できます。
