Excel VBA でセルの塗りつぶし色を基準にデータを抽出する方法【オートフィルター応用】

目次

概要

オートフィルターには、セルの値や数式だけでなく 塗りつぶし色(背景色) を基準に抽出を行う機能がございます。色分けされたデータを効率的に確認・修正したい場面で非常に便利です。本記事では、VBA を用いて「指定色を持つ行だけを表示する」マクロを作成し、処理後にフィルターを解除するまでの流れをわかりやすく解説いたします。


前提条件

項目内容
対応 ExcelMicrosoft 365 または 2016 以降
データ範囲G2:J100 に見出し行を含む表が配置されている想定
マクロ設置先標準モジュール

サンプルコード(VBA)

Sub FilterByCellColor()

    Dim srcSheet   As Worksheet
    Dim tblRange   As Range        ' フィルター対象範囲
    Dim targetCol  As Long         ' 抽出対象の RGB 値
    
    Set srcSheet  = ActiveSheet
    Set tblRange  = srcSheet.Range("G2").CurrentRegion   ' 見出し行を含む範囲を取得
    
    '--- 抽出したい色を設定(例:セル K2 の塗りつぶし色を採用)---
    targetCol = srcSheet.Range("K2").Interior.Color
    
    '--- フィルターで該当色を持つ行のみ表示 ---
    tblRange.AutoFilter _
        Field:=3, _                      ' 範囲内 3 列目を基準に抽出
        Criteria1:=targetCol, _          ' 取得した RGB 値
        Operator:=xlFilterCellColor      ' セル背景色でフィルター
    
    ' (抽出後に必要な確認・修正作業を行う)
    
    '--- フィルター解除 ---
    tblRange.AutoFilter                  ' 条件のみ解除
    If srcSheet.AutoFilterMode Then      ' 矢印ごと非表示に戻す
        srcSheet.AutoFilterMode = False
    End If

End Sub

コードの要点

説明
6–7CurrentRegion を用いて見出し行を含む表全体を取得しております。開始セルは実データに合わせて変更可能です。
10Range("K2").Interior.Color で基準となる RGB 値を取得しています。手動で色を指定する場合は RGB(255, 255, 0) のように直接入力しても構いません。
13–16Operator:=xlFilterCellColor を指定することで、セルの塗りつぶし色を基準に抽出を行います。
21–24tblRange.AutoFilter(引数なし)で抽出条件を解除し、AutoFilterMode = False でフィルター矢印自体を非表示に戻しています。

応用例

目的実装のヒント
複数色を OR 条件で抽出Criteria1:=Array(RGB1, RGB2), Operator:=xlFilterCellColor と配列指定を行います。
フォント色で抽出したいOperator:=xlFilterFontColor に変更して同様の手順で実装できます。
色を自動判定して抽出Range.Find などで事前に色を検索し、該当 RGB 値を targetCol に格納してから抽出を実行します。

よくある質問

質問回答
テーブル(ListObject)形式でも利用できますか。tblRangeListObjects("TableName").Range を設定すれば同じ方法で抽出できます。
条件に一致する行を別シートへコピーできますか。tblRange.SpecialCells(xlCellTypeVisible).Copy Destination:=Worksheets("Result").Range("A1") のように可視セルのみをコピーできます。

まとめ

セルの塗りつぶし色を基準にしたフィルターは、色分けされたデータの確認や修正を効率化する強力な手段です。まずは本サンプルを実行し、対象列の指定色行だけが抽出されることをご確認ください。RGB 値や対象列を変更することで、さまざまな業務シナリオに応用いただけます。

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

この記事を書いた人

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

目次