Excel VBA オートフィルタで色を条件に絞り込み(AutoFilterメソッド)

オートフィルタ操作

今回はAutoFilterメソッドで絞り込む方法をご説明します。

AutoFilterメソッドでオートフィルタを使用するという事は、次にする事は絞り込みかと思います。

AutoFilterメソッド の基本的な使用方法や構文、引数一覧、文字列操作などは次の記事をご覧ください。

1.色で絞り込む際の注意点

色で絞り込む場合はまず、背景色で絞り込むか、文字色で絞り込むかで分かれます。

背景色、文字色のどちらで絞り込むか指定しなければいけません。

同じ列で両方を指定する事が出来ませんので、ご注意下さい。

2.色を指定して絞り込む

背景色と文字色の指定方法

上記で記載した通り、背景色と文字色を両方指定することが出来ないため、どちらか指定する必要があります。

指定方法は引数の「Operator」で定数を指定することができます。

定数説明
xlFilterCellColorセルの文字色
xlFilterFontColorセルの背景色
xlFilterNoFill背景色の塗りつぶしなし
xlFilterAutomaticFontColor自動(文字色黒)

色の指定方法

次は色の指定方法です。

色を指定するには、RGB関数を使用して指定します。

RGB関数はRGB(,,)でそれぞれ3色の値を0〜255の数値を指定する事で、色の選択ができます。

RGBの色の確認方法は『「セルの文字、背景色を指定する」の「3.RGBの番号の探し方」』をご覧ください。

指定した背景色と等しい「=」で絞り込む

次のようなデータを使用して、指定した色と等しいという条件で絞り込みます。

A列が赤色と等しいデータを絞り込みします。

赤色はRGBで表すと「RGB(255,0,0)」となります。

背景色で絞り込み
Sub Sample1()

Dim MaxRow  As Long

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(1, 1), Cells(MaxRow, 4)) _
            .AutoFilter Field:=1, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterCellColor

End Sub
文字色で絞り込み
Sub Sample2()

Dim MaxRow  As Long

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(1, 1), Cells(MaxRow, 4)) _
            .AutoFilter Field:=1, Criteria1:=RGB(255, 0, 0), Operator:=xlFilterFontColor

End Sub

3.色なしで絞り込む

上記では文字色と背景色で色を指定して絞り込みしましたが、今回は色なしで絞り込みます。

色なしで絞り込む方法は上記で記述した定数の背景色の「塗りつぶしなし」と文字色の「自動」で指定します。

背景色の塗りつぶしなしで絞り込み

「Operator」で「xlFilterNoFill」を指定する事で出来ます。

この場合「Criteria1」のRGBは記述しません。

Sub Sample3()

Dim MaxRow  As Long

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(1, 1), Cells(MaxRow, 4)) _
            .AutoFilter Field:=1, Operator:=xlFilterNoFill

End Sub

文字色を自動(黒)で絞り込み

「Operator」で「xlFilterAutomaticFontColor」を指定する事で出来ます。

この場合「Criteria1」のRGBは記述しません。

Sub Sample4()

Dim MaxRow  As Long

MaxRow = Cells(Rows.Count, 1).End(xlUp).Row

Range(Cells(1, 1), Cells(MaxRow, 4)) _
            .AutoFilter Field:=1, Operator:=xlFilterAutomaticFontColor

End Sub
タイトルとURLをコピーしました