【本日のミッション】
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」 になります。) | ○ | ||||||||||||||||||||||||
Criteria1 | 1つめのフィルター条件となる文字列を指定します。 “=”と指定:空白セルが抽出されます。 “<>”と指定:空白以外のフィールドが抽出されます。 省略すると、フィルター条件は All になります。 引数Operatorに「xlTop10Items」を指定する場合は、引数 Criteria1に項目数を指定します。 | ○ | ||||||||||||||||||||||||
Operator | フィルター条件をXlAutoFilterOperator列挙型の定数で指定します。
| ○ | ||||||||||||||||||||||||
Criteria2 | 2つめのフィルター条件となる文字列を指定します。引数 Criteria1および引数 Operatorと組み合わせて、複合抽出条件を指定します。 | ○ | ||||||||||||||||||||||||
VisibleDropDown | オートフィルターのドロップダウン矢印の表示を指定します。 True :矢印を表示します。(規定値) False:矢印を非表示にします。 | ○ |
今回は引数Operatorに「xlFilterCellColor」を指定しています。
Range("a1").AutoFilter Field:=4, Criteria1:=t_cor, Operator:=xlFilterCellColor
手作業で行う時の、↓これのことですね。
参考
AutoFilter オートフィルター 1列に OR条件で2つの条件指定(Excel VBA)
AutoFilter オートフィルター 1列に AND条件 で2つの条件指定(Excel VBA)
AutoFilter オートフィルター 1列に OR条件 で 3つ以上 の条件指定(Excel VBA)
AutoFilter オートフィルター 複数列に 2つの条件指定(Excel VBA)
AutoFilter オートフィルター 複数列に 3つ以上の条件指定(Excel VBA)
エクセル 指定した色のカラーインデックスを取得し、同じ色のセルを色フィルターで抽出する(Excel VBA)