大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、オートフィルタの色フィルタを使う方法について、ご紹介します。色フィルタは「背景色」と「文字色」をフィルタできます。色の設定は「RGB」を使うと便利です。特定の文字色以外など標準でフィルタ出来ない場合は、「作業列」を使いましょう。

はじめに

この記事では、オートフィルタで色フィルタを使う方法について、ご紹介します。

色フィルタは「背景色」と「文字色」でフィルタすることができます。

背景色の場合は、「xlFilterCellColor」を使います。

文字色の場合は、「xlFilterFontColor」となります。

色は「RGB」を使うと便利で、「色の設定」から簡単に調べることができます。

「塗りつぶしなし」や文字色を「自動」でフィルタする際は、引数が1つ飛んでしまうので、1つだけ引数を空けて設定します。

特定の背景色以外などの標準機能でフィルタできない場合は、作業列をうまく使ってフィルタしましょう。

では、VBAを使ってオートフィルタで色フィルタを使う方法について、解説していきます。

この記事で紹介すること

  • VBAでオートフィルタの色フィルタを使う方法

目次から見たい項目へ移動すると便利ですよ。

目次

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」を使うと便利です。

「色の設定」→「ユーザー設定」から確認できます。

色は「RGB」を使うといい

色は「RGB」を使うといい

では、色フィルタを使って、フィルタしてみます。

VBAを使って「背景色」で色フィルタを使う

VBAを使って「背景色」で色フィルタを使ってみます。

黄色でフィルタする

背景色を「黄色」でフィルタしてみます。

黄色は、「RGB(255,255,0)」になります。

背景色を使ってフィルタする場合は、「xlFilterCellColor」を使います。

Sub TEST1()
    
    '「背景色」を「黄色」でフィルタ
    Range("B2").AutoFilter 1, RGB(255, 255, 0), xlFilterCellColor
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「背景色」を黄色でフィルタ

「背景色」を黄色でフィルタ

「背景色」を黄色でフィルタできました。

塗りつぶしなしでフィルタする

塗りつぶしなしでフィルタする場合は、「xlFilterNoFill」を使います。

塗りつぶしなしの場合は、「, , xlFilterNoFill」というように一つ引数を空けて設定します。

Sub TEST2()
    
    '塗りつぶしなしでフィルタ
    Range("B2").AutoFilter 1, , xlFilterNoFill
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

塗りつぶしなしでフィルタ

塗りつぶしなしでフィルタ

塗りつぶしなしでフィルタできました。

VBAを使って「文字色」で色フィルタする

VBAを使って「文字色」で色フィルタしてみます。

赤色の文字でフィルタする

「赤色」の文字でフィルタしてみます。

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

「文字色」でフィルタする場合は、「xlFilterFontColor」を使います。

Sub TEST3()
    
    '「文字色」を「赤」でフィルタ
    Range("B2").AutoFilter 1, RGB(255, 0, 0), xlFilterFontColor
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

文字色を「赤」でフィルタ

文字色を「赤」でフィルタ

「文字色」を「赤」でフィルタできました。

自動でフィルタする

自動でフィルタしてみます。

色的には、「黒色」になりますけど、正確には黒ではなくて、「自動」になります。

文字色を「自動」でフィルタするには、「xlFilterAutomaticFontColor」を使います。

引数が一つとんじゃうので、「, , xlFilterAutomaticFontColor」というように引数を一つ空けて設定します。

Sub TEST4()
    
    '「文字色」を「自動」でフィルタ
    Range("B2").AutoFilter 1, , xlFilterAutomaticFontColor
    
End Sub

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

自動でフィルタ

自動でフィルタ

文字色を「自動」でフィルタできました。

特定の背景色以外でフィルタ

特定の背景色「以外」でフィルタしてみます。

特定の背景色「以外」というのは、標準の機能ではできないです。

なので、ちょっと工夫をして「作業列」を使ってやってみます。

作業列を使う

作業列を使って、背景色を「黄色以外」でフィルタしてみます。

手順としては、

  • 背景色が黄色以外の場合に作業列に「〇」を入力
  • 「〇」でフィルタする

という流れです。

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

表を用意しておきます。

表を用意

表を用意

では、VBAコードを実行してみます。

「背景色」を黄色以外でフィルタ

「背景色」を黄色以外でフィルタ

「背景色」を「黄色以外」でフィルタできました。

作業列をうまく使えば、どんなフィルタでもできます。

配列を使って作業列に入力すれば、高速化もできます。

配列を使って高速にフィルタする方法については、こちらでまとめています。

データが大量にある場合は配列で入力する方法を検討してみましょう。

おわりに

この記事では、オートフィルタで色フィルタを使う方法について、ご紹介しました。

色フィルタは「背景色」と「文字色」でフィルタすることができます。

背景色の場合は、「xlFilterCellColor」を使います。

文字色の場合は、「xlFilterFontColor」となります。

色は「RGB」を使うと便利で、「色の設定」から簡単に調べることができます。

「塗りつぶしなし」や文字色を「自動」でフィルタする際は、引数が1つ飛んでしまうので、1つだけ引数を空けて設定します。

特定の背景色以外などの標準機能でフィルタできない場合は、作業列をうまく使ってフィルタしましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す