VBA で複数の基準を使用した自動フィルター

Iqra Hasnain 2022年6月2日
VBA で複数の基準を使用した自動フィルター

AutoFilter を使用して、VBA でセルの範囲または Excel テーブルをフィルタリングする方法を紹介します。

VBA で複数の基準を使用した自動フィルター

VBA コードで作業しているときに、Excel でフィルターを使用する必要がある状況はたくさんあります。特定の日付の売上データを取得する場合は、VBA の日付列で日付フィルターを使用する必要があります。

VBA は、AutoFilter を使用してこの問題の解決策を提供します。

ユーザーがデータをフィルタリングできるように、範囲内で自動フィルターを使用する方法を理解することから始めます。まず、以下に示すように、いくつかのデータを用意しましょう。

VBA でオートフィルターを使用するためのサンプルデータ

以下に示すように、シートの Range メソッドを使用して、AutoFilter を適用する範囲を選択します。

# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter
End Sub

出力:

VBA のサンプルデータでアクティブ化されたオートフィルター

範囲のヘッダー(この場合は A1:C1)を指定し、オブジェクト範囲の AutoFilter 手法を使用して自動フィルターを適用する必要があります。これにより、上記のように、範囲のフィルターがアクティブになります。

VBA のフィールドと基準を使用した自動フィルター

VBA では、特定のフィールドを特定の値でフィルタリングすることもできます。これを実現するには、フィルターを適用するフィールドを定義する必要があります。

また、フィルターを適用する基準を定義します。2 番目の列を Laptop のみでフィルタリングする場合は、次のようにコードを実行できます。

# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:="Laptop"
End Sub

出力:

VBA のいくつかの基準でオートフィルターを使用する

上記の例からわかるように、フィールドと基準の値を定義することにより、目的の値で AutoFilter を使用することができました。結果は、VBA コードで提供した基準を使用したフィルターで上に示されています。

VBA で複数の基準を使用した自動フィルター

フィルタに複数の基準を設定するとします。その場合、1つのフィールドを複数の値でフィルタリングする必要があるときに、AutoFilter で別のパラメーター演算子を使用してそれを行うことができます。

以下に示すように、xlFilterValues 演算子を使用し、値を配列の Criteria パラメーターに渡して、これらの値に基づいてフィルターで除外できます。

# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:=Array("Laptop", "iPhone"), _
                                 Operator:=xlFilterValues
End Sub

出力:

VBA のサンプルデータの複数の値でアクティブ化されたオートフィルター

上記の例からわかるように、コードを実行すると、AutoFilter が複数の値でアクティブ化され、必要な結果が表示されます。

VBA で複数の基準を使用して日付範囲を自動フィルタリング

日付範囲に基づいて AutoFilter を使用する場合、または特定の日付範囲の間のデータを取得する場合は、xlAnd 演算子を使用して複数の Criteria パラメーターを使用する必要があります。

例を見て、以下の日付でサンプルシートにデータを追加してみましょう。

VBA の日付範囲でオートフィルターを使用するためのサンプルデータ

上記のデータからわかるように、日付を含む新しい列を追加しました。以下に示すように、これらの日付を使用して、5 月 20 日から 25 日までのデータをフィルタリングします。

#VBA
Sub test()
Sheet1.Range("A1:D1").AutoFilter Field:=1, Criteria1:=">=05/20/2022", Operator:=xlAnd, Criteria2:="<=05/25/2022", Operator:=xlFilterValues
End Sub

出力:

VBA のサンプルデータの日付範囲でアクティブ化されたオートフィルター

上記の例からわかるように、日付の 2つの基準を指定し、xlAnd 値で Operator パラメーターを使用することにより、日付範囲のデータを簡単にフィルター処理できます。

いくつかの Operator パラメータとその説明を以下に説明します。

  1. xlAnd 演算子は、Criteria1Criteria2 などの複数の基準でフィルタリングできます。
  2. xlOr 演算子は、いずれかの基準でフィルタリングできます。
  3. xlTop10Items 演算子は、基準から最高ランクの値の特定の数をフィルタリングするのに役立ちます。
  4. xlBottom10Items 演算子は、基準から最も低いランクの値の特定の数をフィルタリングするのに役立ちます。
  5. xlTop10Percent 演算子は、基準から最高ランクの値の特定のパーセンテージをフィルタリングするのに役立ちます。
  6. xlBottom10Percent 演算子は、基準から最低ランクの値の特定のパーセンテージをフィルタリングするのに役立ちます。
  7. xlFilterValues 演算子は、複数の値で基準をフィルタリングするのに役立ちます。
  8. xlFilterCellColor 演算子は、セルの色に基づいて基準をフィルタリングするのに役立ちます。
  9. xlFilterFontColor 演算子は、フォントの色に基づいて基準をフィルタリングするのに役立ちます。
    10.xlFIlterIcon 演算子は、フォントアイコンに基づいて基準をフィルタリングするのに役立ちます。
    11.xlFilterDynamic 演算子は、動的な値をフィルタリングするのに役立ちます。