今回は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