エクセル 指定した色のカラーインデックスを取得し、同じ色のセルを色フィルターで抽出する(Excel VBA)

【本日のミッション】

Excel VBAで、指定した色のカラーインデックスを取得し、同じ色のセルを色フィルターで抽出せよ

ミッションの概要

塗りつぶしで指定した色のカラーインデックスを取得し、その色のセルのみを色フィルターで抽出せよ、というのが今回のミッションです。


↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

プロシージャ

Sub 背景色フィルター()

    Dim t_cor As Long   'カラー

    t_cor = Range("F1").Interior.Color
    Range("a1").AutoFilter Field:=4, Criteria1:=t_cor, Operator:=xlFilterCellColor

End Sub

データ抽出を行いたいセルをアクティブにした状態で、プロシージャ(Sub~End Subまで)のどこかにカーソルを置いてF5キーをクリックしてください。

セルF1に塗ったカラーと同じ色のセルだけが、抽出されました。

■■■スポンサーリンク■■■

セルの背景色を取得する Interior.Color プロパティ

セルの背景色は、Interior.Color プロパティで取得することができます。

Range.Interior.Color

複数セルの背景色は取得不可

Interior.Color では、複数セルの背景色を取得することはできません。
複数セルの背景色を取得しようとすると「0」が返ってきます。

t_cor = Range("A1:B1").Interior.Color
MsgBox "あなたが指定した色のカラーインデックスは「" & t_cor & "」です"

AutoFilterメソッド

Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
引数名説明省略
Fieldフィルターの対象となる列を列番号で指定します。列番号は、Rangeオブジェクト範囲の左から何列目かを整数値で指定します。(一番左列番号が「1」 になります。)
Criteria11つめのフィルター条件となる文字列を指定します。
“=”と指定:空白セルが抽出されます。
“<>”と指定:空白以外のフィールドが抽出されます。
省略すると、フィルター条件は All になります。
引数Operatorに「xlTop10Items」を指定する場合は、引数 Criteria1に項目数を指定します。
Operatorフィルター条件をXlAutoFilterOperator列挙型の定数で指定します。

定数説明
xlAndAND条件(Criteria1かつCriteria2)
xlOrOR条件(Criteria1またはCriteria2)
xlTop10Items上位からCriteria1で指定した項目数
xlBottom10Items下位からCriteria1で指定した項目数
xlTop10Percent上位からCriteria1で指定した割合%
xlBottom10Percent下位からCriteria1で指定した割合%
xlFilterValuesフィルターの値
xlFilterCellColorセルの色
xlFilterFontColorフォントの色
xlFilterIconフィルター アイコン
xlFilterDynamic動的フィルター
Criteria22つめのフィルター条件となる文字列を指定します。引数 Criteria1および引数 Operatorと組み合わせて、複合抽出条件を指定します。
VisibleDropDownオートフィルターのドロップダウン矢印の表示を指定します。
True :矢印を表示します。(規定値)
False:矢印を非表示にします。

今回は引数Operatorに「xlFilterCellColor」を指定しています。

Range("a1").AutoFilter Field:=4, Criteria1:=t_cor, Operator:=xlFilterCellColor

手作業で行う時の、↓これのことですね。