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