VBA で複数の基準を使用した自動フィルター
AutoFilter
を使用して、VBA でセルの範囲または Excel テーブルをフィルタリングする方法を紹介します。
VBA で複数の基準を使用した自動フィルター
VBA コードで作業しているときに、Excel でフィルターを使用する必要がある状況はたくさんあります。特定の日付の売上データを取得する場合は、VBA の日付列で日付フィルターを使用する必要があります。
VBA は、AutoFilter
を使用してこの問題の解決策を提供します。
ユーザーがデータをフィルタリングできるように、範囲内で自動フィルターを使用する方法を理解することから始めます。まず、以下に示すように、いくつかのデータを用意しましょう。
以下に示すように、シートの Range
メソッドを使用して、AutoFilter
を適用する範囲を選択します。
# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter
End Sub
出力:
範囲のヘッダー(この場合は A1:C1
)を指定し、オブジェクト範囲の AutoFilter
手法を使用して自動フィルターを適用する必要があります。これにより、上記のように、範囲のフィルターがアクティブになります。
VBA のフィールドと基準を使用した自動フィルター
VBA では、特定のフィールドを特定の値でフィルタリングすることもできます。これを実現するには、フィルターを適用するフィールドを定義する必要があります。
また、フィルターを適用する基準を定義します。2 番目の列を Laptop
のみでフィルタリングする場合は、次のようにコードを実行できます。
# VBA
Sub test()
Sheet1.Range("A1:C1").AutoFilter Field:=2, Criteria1:="Laptop"
End Sub
出力:
上記の例からわかるように、フィールドと基準の値を定義することにより、目的の値で 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
出力:
上記の例からわかるように、コードを実行すると、AutoFilter
が複数の値でアクティブ化され、必要な結果が表示されます。
VBA で複数の基準を使用して日付範囲を自動フィルタリング
日付範囲に基づいて AutoFilter
を使用する場合、または特定の日付範囲の間のデータを取得する場合は、xlAnd
演算子を使用して複数の Criteria
パラメーターを使用する必要があります。
例を見て、以下の日付でサンプルシートにデータを追加してみましょう。
上記のデータからわかるように、日付を含む新しい列を追加しました。以下に示すように、これらの日付を使用して、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
出力:
上記の例からわかるように、日付の 2つの基準を指定し、xlAnd
値で Operator
パラメーターを使用することにより、日付範囲のデータを簡単にフィルター処理できます。
いくつかの Operator
パラメータとその説明を以下に説明します。
xlAnd
演算子は、Criteria1
やCriteria2
などの複数の基準でフィルタリングできます。xlOr
演算子は、いずれかの基準でフィルタリングできます。xlTop10Items
演算子は、基準から最高ランクの値の特定の数をフィルタリングするのに役立ちます。xlBottom10Items
演算子は、基準から最も低いランクの値の特定の数をフィルタリングするのに役立ちます。xlTop10Percent
演算子は、基準から最高ランクの値の特定のパーセンテージをフィルタリングするのに役立ちます。xlBottom10Percent
演算子は、基準から最低ランクの値の特定のパーセンテージをフィルタリングするのに役立ちます。xlFilterValues
演算子は、複数の値で基準をフィルタリングするのに役立ちます。xlFilterCellColor
演算子は、セルの色に基づいて基準をフィルタリングするのに役立ちます。xlFilterFontColor
演算子は、フォントの色に基づいて基準をフィルタリングするのに役立ちます。
10.xlFIlterIcon
演算子は、フォントアイコンに基づいて基準をフィルタリングするのに役立ちます。
11.xlFilterDynamic
演算子は、動的な値をフィルタリングするのに役立ちます。