Excel VBAで背景色のあるセルだけを抽出する方法|塗りつぶされたセルを一括取得

Excelでは、セルの背景色によってステータスや分類を表現することがあります。
しかし、色付きのセルだけをまとめて抽出するには手作業では限界があります。
本記事では、VBAを使って「背景色が設定されているすべてのセル」を検索し、順にコピーして抽出する方法をご紹介いたします。


目次

想定する活用場面

  • 背景色でマークされたセルだけを別シートや横並びに抽出したい。
  • 見た目によるデータ分類をプログラムで扱いたい。
  • 色付きセルを条件に集計・確認を行いたい。

VBAコードの例

以下のコードでは、範囲 D2:F8 の中から背景色(塗りつぶし)が設定されているセルだけを探し出し、セル J2 から右方向に順にコピーしていきます。

Sub ExtractColoredCells()

    Dim searchArea As Range
    Dim foundCell As Range
    Dim firstFound As Range
    Dim pasteCell As Range

    ' 検索対象の範囲を指定
    Set searchArea = ActiveSheet.Range("D2:F8")
    Set pasteCell = ActiveSheet.Range("J2")

    ' 検索条件の初期化と設定(塗りつぶしされているセルを対象)
    Application.FindFormat.Clear
    Application.FindFormat.Interior.Pattern = xlPatternSolid

    ' 最初の該当セルを検索
    Set foundCell = searchArea.Find(What:="", SearchFormat:=True)

    If foundCell Is Nothing Then
        MsgBox "背景色が設定されたセルは見つかりませんでした。", vbInformation
        Exit Sub
    End If

    Set firstFound = foundCell

    Do
        foundCell.Copy Destination:=pasteCell
        Set pasteCell = pasteCell.Offset(0, 1)
        Set foundCell = searchArea.Find(What:="", After:=foundCell, SearchFormat:=True)
    Loop While Not foundCell Is Nothing And foundCell.Address <> firstFound.Address

End Sub

コードのポイント解説

要素内容
Application.FindFormat.Clear検索条件の初期化
Application.FindFormat.Interior.Pattern = xlPatternSolid単色の塗りつぶしがあるセルを対象にする設定
searchArea.Find(..., SearchFormat:=True)書式を検索対象に含めるための指定
Copy Destination:=pasteCell該当セルの内容を別セルへコピー

注意点

  • 条件付き書式で色が変わっている場合、この方法では検索できません。
  • 検索は「塗りつぶし色が設定されている」ことが条件であり、白色や無地のセルは無視されます。
  • コピー先が横方向に進むため、大量データのときはスペースにご注意ください。

まとめ

VBAを使えば、背景色が設定されているセルだけを簡単に抽出できます。
条件付きでハイライトされたセルや、目視で確認が難しいセルも正確に検出できるため、業務効率の向上に大きく貢献します。

今回ご紹介した方法をベースに、抽出結果を別シートへ貼り付けたり、色別に分類したりするなど、応用も可能です。
ぜひお仕事や日常業務に取り入れてみてください。

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

この記事を書いた人

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

目次