Excel VBA 逆引き集 | 特殊セルまとめテンプレ

Excel VBA
スポンサーリンク

特殊セルまとめテンプレ

Excel VBAで大量データを扱うとき「特定のセルだけ処理したい」場面は多いです。
通常のループで判定すると遅くなりますが、SpecialCells を使えば一気に対象セルを抽出できるので高速化できます。さらに AutoFilter と組み合わせると「フィルタ後の特殊セルだけ処理」も可能です。ここでは初心者向けに、代表的な特殊セルのテンプレートをまとめて紹介します。


基本の考え方

  • 特殊セルの種類
    • xlCellTypeConstants → 入力値セル(直接入力された値)
    • xlCellTypeFormulas → 数式セル
    • xlCellTypeBlanks → 空白セル
    • xlCellTypeFormulas, xlErrors → エラーセル
    • xlCellTypeVisible → フィルタや非表示を無視して「見えているセル」だけ
  • 組み合わせ例
    • Range.SpecialCells(xlCellTypeConstants) → 定数セルだけ
    • Range.SpecialCells(xlCellTypeFormulas).SpecialCells(xlCellTypeVisible) → フィルタ後の数式セルだけ

テンプレ1:定数セルだけ色付け

Sub HighlightConstants()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("A1:D20")

    Dim constRg As Range
    On Error Resume Next
    Set constRg = rg.SpecialCells(xlCellTypeConstants)
    On Error GoTo 0

    If Not constRg Is Nothing Then
        constRg.Interior.Color = vbYellow
    End If
End Sub
VB

テンプレ2:数式セルだけ赤文字に

Sub HighlightFormulas()
    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.Font.Color = vbRed
    End If
End Sub
VB

テンプレ3:空白セルに「未入力」と書き戻し

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

テンプレ4:エラーセルを「0」に置き換え

Sub ReplaceErrors()
    Dim ws As Worksheet: Set ws = Worksheets("Data")
    Dim rg As Range: Set rg = ws.Range("C1:C20")

    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

テンプレ5:フィルタ後の特殊セルだけ処理(例:定数セル)

Sub FilterAndConstants()
    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 constRg As Range
    On Error Resume Next
    Set constRg = rg.SpecialCells(xlCellTypeConstants).SpecialCells(xlCellTypeVisible)
    On Error GoTo 0

    If Not constRg Is Nothing Then
        constRg.Interior.Color = vbGreen
    End If

    ' フィルタ解除
    ws.AutoFilterMode = False
End Sub
VB

例題で練習

'例1:定数セルだけ色付け
Sub Example1()
    HighlightConstants
End Sub

'例2:数式セルだけ赤文字
Sub Example2()
    HighlightFormulas
End Sub

'例3:空白セルに「未入力」と書き戻し
Sub Example3()
    FillBlanks
End Sub

'例4:エラーセルを「0」に置き換え
Sub Example4()
    ReplaceErrors
End Sub

'例5:フィルタ後の定数セルだけ処理
Sub Example5()
    FilterAndConstants
End Sub
VB

初心者向けポイント

  • 特殊セルの種類を覚える → 定数・数式・空白・エラー。
  • AutoFilterと組み合わせると強力 → 条件で絞り込んだ後に対象セルだけ処理可能。
  • 高速化の理由 → 1行ずつ判定せず、一括で対象セルを抽出できる。
  • エラー処理を忘れない → 対象セルがないとエラーになるので On Error Resume Next を必ず入れる。

👉 この「特殊セルまとめテンプレ」を覚えておけば、Excel VBAで 定数・数式・空白・エラーセルを高速に処理 でき、さらにフィルタ後のデータにも応用できます。

タイトルとURLをコピーしました