大体でIT
大体でIT
2021/6/19
Excel VBAで、オートフィルタの色フィルタを使う方法について、ご紹介します。色フィルタは「背景色」と「文字色」をフィルタできます。色の設定は「RGB」を使うと便利です。特定の文字色以外など標準でフィルタ出来ない場合は、「作業列」を使いましょう。
この記事では、オートフィルタで色フィルタを使う方法について、ご紹介します。
色フィルタは「背景色」と「文字色」でフィルタすることができます。
背景色の場合は、「xlFilterCellColor」を使います。
文字色の場合は、「xlFilterFontColor」となります。
色は「RGB」を使うと便利で、「色の設定」から簡単に調べることができます。
「塗りつぶしなし」や文字色を「自動」でフィルタする際は、引数が1つ飛んでしまうので、1つだけ引数を空けて設定します。
特定の背景色以外などの標準機能でフィルタできない場合は、作業列をうまく使ってフィルタしましょう。
では、VBAを使ってオートフィルタで色フィルタを使う方法について、解説していきます。
オートフィルタを色フィルタするVBAコードについて、まとめています。
VBAコードだけを確認したい場合に、ご活用ください。
'背景色でフィルタ
Range("B2").AutoFilter 1, RGB(255, 255, 0), xlFilterCellColor '赤でフィルタ
Range("B2").AutoFilter 1, , xlFilterNoFill '塗りつぶしなしでフィルタ
'文字色でフィルタ
Range("B2").AutoFilter 1, RGB(255, 0, 0), xlFilterFontColor '黄色でフィルタ
Range("B2").AutoFilter 1, , xlFilterAutomaticFontColor '自動でフィルタ
色フィルタは、「背景色」と「文字色」でフィルタできます。
「背景色」と「文字色」でフィルタできる
色は「RGB」を使うといい
VBAを使って「背景色」で色フィルタを使ってみます。
黄色は、「RGB(255,255,0)」になります。
背景色を使ってフィルタする場合は、「xlFilterCellColor」を使います。
Sub TEST1()
'「背景色」を「黄色」でフィルタ
Range("B2").AutoFilter 1, RGB(255, 255, 0), xlFilterCellColor
End Sub
表を用意
「背景色」を黄色でフィルタ
塗りつぶしなしでフィルタする場合は、「xlFilterNoFill」を使います。
塗りつぶしなしの場合は、「, , xlFilterNoFill」というように一つ引数を空けて設定します。
Sub TEST2()
'塗りつぶしなしでフィルタ
Range("B2").AutoFilter 1, , xlFilterNoFill
End Sub
表を用意
塗りつぶしなしでフィルタ
「文字色」でフィルタする場合は、「xlFilterFontColor」を使います。
Sub TEST3()
'「文字色」を「赤」でフィルタ
Range("B2").AutoFilter 1, RGB(255, 0, 0), xlFilterFontColor
End Sub
表を用意
文字色を「赤」でフィルタ
色的には、「黒色」になりますけど、正確には黒ではなくて、「自動」になります。
文字色を「自動」でフィルタするには、「xlFilterAutomaticFontColor」を使います。
引数が一つとんじゃうので、「, , xlFilterAutomaticFontColor」というように引数を一つ空けて設定します。
Sub TEST4()
'「文字色」を「自動」でフィルタ
Range("B2").AutoFilter 1, , xlFilterAutomaticFontColor
End Sub
表を用意
自動でフィルタ
特定の背景色「以外」というのは、標準の機能ではできないです。
なので、ちょっと工夫をして「作業列」を使ってやってみます。
作業列を使って、背景色を「黄色以外」でフィルタしてみます。
背景色が黄色以外の場合に作業列に「〇」を入力
「〇」でフィルタする
Sub TEST5()
For i = 3 To 11
'背景色が「黄色」以外の場合
If Cells(i, 2).Interior.Color <> RGB(255, 255, 0) Then
Cells(i, 4) = "〇" '印をつける
Else
Cells(i, 4) = "" '空白にする
End If
Next
Range("B2").AutoFilter 'オートフィルタを解除
Range("B2").AutoFilter 3, "〇" '’印でフィルタ
End Sub
表を用意
「背景色」を黄色以外でフィルタ
作業列をうまく使えば、どんなフィルタでもできます。
配列を使って作業列に入力すれば、高速化もできます。
配列を使って高速にフィルタする方法については、こちらでまとめています。
データが大量にある場合は配列で入力する方法を検討してみましょう。
この記事では、オートフィルタで色フィルタを使う方法について、ご紹介しました。
色フィルタは「背景色」と「文字色」でフィルタすることができます。
背景色の場合は、「xlFilterCellColor」を使います。
文字色の場合は、「xlFilterFontColor」となります。
色は「RGB」を使うと便利で、「色の設定」から簡単に調べることができます。
「塗りつぶしなし」や文字色を「自動」でフィルタする際は、引数が1つ飛んでしまうので、1つだけ引数を空けて設定します。
特定の背景色以外などの標準機能でフィルタできない場合は、作業列をうまく使ってフィルタしましょう。
参考になればと思います。最後までご覧くださいまして、ありがとうございました。