【エクセルマクロ】オートフィルタで複数色を絞る:自動化で時短

ExcelVBA-オートフィルタ複数色で絞り込み-アイキャッチ ExcelVBA

エクセルマクロで、オートフィルタで複数色を絞るVBAコードをご紹介します。

このページのマクロコードは、コピペで使えます。
ぜひお試しください!

オートフィルタで複数色を絞る

以下のマクロを実行すると、配列を使用して複数の色をフィルターで絞り込みします。


Sub オートフィルタで複数の色を抽出()

Dim LastRow As Long
Dim i As Long
Dim j As Long
Dim Target As String
Dim myAry As Variant
Dim Target_Char As String

    '最終行取得
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row

    j = 1

    '配列宣言
    myAry = Array()

    '最終行から先頭へループ
    For i = 1 To LastRow

        '★A列の色を取得
        Target = Cells(i, 1).Interior.Color

        '★A列の文字列を取得
        Target_Char = Cells(i, 1).Value

        '取得したセル色が、黄色or緑だったら
        If Target = 65535 Or Target = 5287936 Then

            '配列の要素数を宣言
            ReDim Preserve myAry(j)

            '該当セルの文字列を配列格納
            myAry(j) = Target_Char
            j = j + 1
        End If
    Next

    '★オートフィルタでA列から該当データを抽出
    Range("A1").AutoFilter field:=1, Criteria1:=myAry, Operator:=xlFilterValues

End Sub

 

マクロ実行後

A列の背景色を判定し、「黄色」と「緑」のデータを

フィルターで抽出します。


 

ポイント

重複データがない列の背景色を判定に使用します。

今回の場合、重複データが存在しない [A列] の色と文字列を判定に使用しています。

フィルタの [field:=1] で、A列から該当データを抽出しています。

(以下は該当のVBAコードを抜粋)


'★A列の色を取得
Target = Cells(i, 1).Interior.Color

'★A列の文字列を取得
Target_Char = Cells(i, 1).Value

'★オートフィルタでA列から該当データを抽出
Range("A1").AutoFilter field:=1, Criteria1:=myAry, Operator:=xlFilterValues

 

仮に、重複データがある [C列] で判定すると、

色なしのデータも抽出されてしまいます。

 
この記事がお役に立ちますと幸いです。
 
・【エクセルマクロ】オートフィルタ処理を自動化する使用例まとめ
 

【エクセルマクロ】オートフィルタ処理を自動化:超便利28選
...

 

「Excel自動化[最強]時短仕事術」
自動化の基礎と時短に役立つテクニック解説書
毎日の定型業務を手際良く行え、大幅な業務効率化を実現!