エラーセルを処理
Excelで「#DIV/0!」「#N/A」「#VALUE!」などの エラーセルだけ処理したい 場面があります。
このとき便利なのが SpecialCells(xlCellTypeFormulas, xlErrors) と AutoFilter の組み合わせです。初心者向けに、コード例やテンプレートをかみ砕いて説明します。
基本の考え方
- SpecialCells(xlCellTypeFormulas, xlErrors)
→ 範囲内の「エラーを返す数式セル」だけを抽出。 - SpecialCells(xlCellTypeVisible)
→ フィルタや非表示を無視して「見えているセル」だけ対象。 - 組み合わせると強力
→ 「フィルタ後のエラーセルだけ処理」が可能。 - エラー処理が必須
→ エラーセルが存在しない場合はエラーになるのでOn Error Resume Nextを入れる。
テンプレ1:エラーセルだけ色付け
Sub HighlightErrorCells()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("A1:D20")
Dim errRg As Range
On Error Resume Next
Set errRg = rg.SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not errRg Is Nothing Then
errRg.Interior.Color = vbRed
End If
End Sub
VB- ポイント:
- 範囲内の「エラーセル」だけ赤色に。
- 通常の数値や文字は対象外。
テンプレ2:エラーセルを「0」に置き換える
Sub ReplaceErrorWithZero()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("B2:B20")
Dim errRg As Range, c As Range
On Error Resume Next
Set errRg = rg.SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not errRg Is Nothing Then
For Each c In errRg
c.Value = 0
Next c
End If
End Sub
VB- ポイント: エラーセルだけを「0」に変換。
テンプレ3:AutoFilter+エラーセルだけ処理
Sub FilterAndErrorCells()
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 errRg As Range
On Error Resume Next
Set errRg = rg.SpecialCells(xlCellTypeFormulas, xlErrors).SpecialCells(xlCellTypeVisible)
On Error GoTo 0
If Not errRg Is Nothing Then
errRg.Font.Color = vbBlue
End If
' フィルタ解除
ws.AutoFilterMode = False
End Sub
VB- ポイント:
- フィルタで「東京」だけ表示。
- さらに「エラーセルだけ青文字」に。
テンプレ4:エラーセルをカウント
Sub CountErrorCells()
Dim ws As Worksheet: Set ws = Worksheets("Data")
Dim rg As Range: Set rg = ws.Range("C2:C50")
Dim errRg As Range
On Error Resume Next
Set errRg = rg.SpecialCells(xlCellTypeFormulas, xlErrors)
On Error GoTo 0
If Not errRg Is Nothing Then
MsgBox "エラーセルの数=" & errRg.Count
End If
End Sub
VB- ポイント: エラーセルの件数を数える。
例題で練習
'例1:エラーセルだけ色付け
Sub Example1()
HighlightErrorCells
End Sub
'例2:エラーセルを「0」に置き換える
Sub Example2()
ReplaceErrorWithZero
End Sub
'例3:フィルタ後のエラーセルだけ処理
Sub Example3()
FilterAndErrorCells
End Sub
'例4:エラーセルをカウント
Sub Example4()
CountErrorCells
End Sub
VB初心者向けポイント
- xlCellTypeFormulas, xlErrors → エラーを返す数式セルだけ対象。
- xlCellTypeConstants → 入力値セル。
- xlCellTypeBlanks → 空白セル。
- xlCellTypeVisible → フィルタや非表示を無視して「見えているセル」だけ対象。
- エラー処理を忘れない → エラーセルがないとエラーになる。
👉 この「SpecialCells / AutoFilter × エラーセルテンプレ」を覚えておけば、Excel VBAで エラーセルの検出・修正・フィルタ後のエラー処理 を高速に実務へ応用できます。
