VBA オートフィルタ 複数条件 AutoFilter

今回は、オートフィルタの複数条件を設定する方法と色でフィルターをする方法を紹介していきます。
オートフィルタの基本的な使い方がわからない方は先にこちらの記事を参考にしてみてください。

オートフィルタの宣言方法

オートフィルタを作成する方法を紹介していきます。

対象のセル範囲.AutoFilter Field, Criteria1, Operator, Criteria2, VisibleDropDown

これで、フィルターを作成することができます。

Field:フィルターの対象となる列を指定することができます。リストの左端から 1 2 3・・・列となります。
Criteria1:フィルターの条件を指定することができます。省略することができ、省略した場合は全てが対象になります。
Operator:And条件やOr条件を指定することができます。
Criteria2:2つ目のフィルターの条件を指定することができます。
VisibleDropDown:ドロップダウンリストの表示、非表示の選択をすることができます。

 

Operatorの種類によってフィルターの絞り方が変わるので、一覧で紹介しておきます。

Operatorの種類 説明
xland Criteria1とCriteria2のAnd条件でフィルターをかける
xlBottom10Items Criteria1で指定される値の下からトップ10を取得
xlBottom10Percent Criteria1で指定される値の下位10%を取得
xlfiltercellcolor セルの色を指定
xlfilterdynamic 動的フィルター
xlfilterfontcolor フォントの色を指定
xlfiltericon フィルター アイコン
xlfiltervalues フィルターの値
xlor Criteria1とCriteria2のOr条件でフィルターをかける
xlTop10Items Criteria1で指定される値のトップ10を取得
xlTop10Percent Criteria1で指定される値の上位10%を取得

 

複数条件を指定する方法

オートフィルタで二つの条件を組み合わせる方法を紹介していきます。
2つの条件を組み合わせるには、Criteria1,Operator,Criteria2を設定しましょう。

下記のような表を用意しました。

And条件

2つの条件を満たす値のみを表示する、And条件のやり方から見ていきましょう。
And条件を利用するには、「Operator := xlAnd」を指定しましょう。

先ほどの表から、入社日が2016/4/1から2019/4/1までの社員に絞ってみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 6, ">2016/4/1", xlAnd, "<2019/4/1"
End Sub

結果

 

Or条件

2つの条件どちらかを満たす値を表示する、Or条件のやり方から見ていきましょう。
Or条件を利用するには、「Operator := xlOr」を指定しましょう。

先ほどの表から、入社日が2015/4/2もしくは2019/4/1以降に入社した社員に絞ってみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 6, "2015/4/2", xlOr, ">2019/4/1"
End Sub

結果

 

3つ以上の値をフィルタする方法

3つ以上の値をフィルターする場合は、配列を使用しましょう。
セルの値でを絞るには、「Operator := xlFilterValues」を指定しましょう。
先ほどの表から、入社日が2015/4/2、2017/4/2、2019/4/2の社員に絞ってみましょう。

Private Sub cmdAutoFilter_Click()

    Dim a(2) As String
    a(0) = "2015/4/2"
    a(1) = "2017/4/2"
    a(2) = "2019/4/2"
    
    Range("A3:F10").AutoFilter 6, a, xlFilterValues
    
End Sub

 

結果

 

セル色を指定する方法

セルの色やフォントの色でフィルターを掛ける方法を紹介します。

セルの背景を指定してフィルターを行う

セルの背景色を絞るには、「Operator := xlFilterCellColor」を指定しましょう。

セルの背景が黄色いセルに絞ってみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 3, RGB(255, 255, 0), xlFilterCellColor
End Sub

 

結果

フォントの色を指定してフィルターを行う

フォントの色を絞るには、「Operator := xlFilterFontColor」を指定しましょう。

フォントの色が赤いセルに絞ってみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 3, RGB(255, 0, 0), xlFilterFontColor
End Sub

結果

 

まとめ

今回はオートフィルタの複数条件についてまとめてきました。

オートフィルタで複数条件をするときは、And条件もしくはOr条件もしくは配列を利用した方法があります。

状況に合わせて利用しましょう。

また、基本的なやり方については、別記事があるのでそちらも参考にしてみてください。

 

EXCEL VBAの記事一覧

おすすめの記事