Excel VBAで塗りつぶし色などの書式を条件にセルを検索する方法|色付きセルの抽出処理

Excelで「赤く塗られたセル」や「特定のフォント形式が使われているセル」を検索したいとき、手動では時間がかかってしまう場合があります。
本記事では、VBAを使って特定の書式を持つセルを一括検索し、その内容を別の場所に抽出する方法をご紹介いたします。


目次

想定される利用シーン

  • エラーセルを赤色で塗っているが、その一覧を別表にまとめたい。
  • 条件付き書式で強調されたセルだけを抽出したい。
  • フォーマットに基づくデータ収集や分析を自動化したい。

VBAコードの例

以下のコードでは、範囲 B2:E11 の中から「塗りつぶし色が赤(ColorIndex = 3)」のセルを検索し、その値を H2 セルから縦に順に出力していきます。

Sub FindCellsByFormat()

    Dim searchRange As Range
    Dim firstHit As Range
    Dim hitCell As Range
    Dim outputCell As Range

    ' 検索対象範囲
    Set searchRange = ActiveSheet.Range("B2:E11")

    ' 出力開始セル
    Set outputCell = ActiveSheet.Range("H2")

    ' 検索書式の初期化と設定
    Application.FindFormat.Clear
    Application.FindFormat.Interior.ColorIndex = 3 ' 赤く塗られたセルを検索

    ' 書式一致セルの検索
    Set hitCell = searchRange.Find(What:="", SearchFormat:=True)

    If hitCell Is Nothing Then
        MsgBox "該当する書式のセルは見つかりませんでした。", vbInformation
        Exit Sub
    End If

    Set firstHit = hitCell

    Do
        outputCell.Value = hitCell.Value
        Set outputCell = outputCell.Offset(1, 0)
        Set hitCell = searchRange.Find(What:="", After:=hitCell, SearchFormat:=True)
    Loop While Not hitCell Is Nothing And hitCell.Address <> firstHit.Address

End Sub

ポイント解説

処理内容説明
Application.FindFormat.Clear検索条件に設定された書式を初期化します。
Application.FindFormat.Interior.ColorIndex = 3色番号 3(赤)を検索対象に設定します。
SearchFormat:=True書式を検索対象とする指定。これが無いと意味を持ちません。
Do...Loop複数該当セルがある場合にループ処理ですべて取得します。

注意点と補足

  • ColorIndex はExcelの内部色番号で、環境によって表示色が微妙に異なることがあります。
  • What:="" の指定は必須です。書式検索時には検索文字列は無視されますが、指定が必要です。
  • 数式セルや空白セルでも、該当書式であれば検索されます。

まとめ

VBAのFindメソッドにSearchFormat:=Trueを組み合わせることで、セルの中身ではなく書式を基準に検索することが可能になります。
特に色付きセルの抽出や、書式に基づくデータ整形を自動化したい場合に非常に便利なテクニックです。

目視によるチェックを減らし、作業ミスを防ぎつつ、効率よく正確なデータ収集を行いたい方は、ぜひ本手法をご活用ください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次