Vba: 複数の条件でオートフィルターを使用する方法
次の方法を使用すると、VBA で複数の条件を指定してオートフィルターを使用できます。
方法 1: 単一列で複数の条件を指定してオートフィルターを使用する
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=Array(" A ", " C "), Operator:=xlFilterValues
End With
End Sub
この特定のマクロは、最初の列の値が「A」または「C」に等しい、範囲A1:C11内のすべての行をフィルターします。
方法 2: 複数の列で複数の条件を指定してオートフィルターを使用する
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=" A "
.AutoFilter Field:=2, Criteria1:=" Guard "
End With
End Sub
この特定のマクロは、範囲A1:C11をフィルター処理して、最初の列が「A」に等しく、2 番目の列が「Guard」に等しい行のみを表示します。
次の例は、Excel の次のデータ セットでこれらの各メソッドを実際に使用する方法を示しています。
例 1: 列内の複数の条件でオートフィルターを使用する
データセットをフィルタリングして、最初の列が「A」または「C」に等しい行のみを表示するとします。
これを行うには、次のマクロを作成できます。
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=Array(" A ", " C "), Operator:=xlFilterValues
End With
End Sub
このマクロを実行すると、次の出力が表示されます。
データセットはフィルター処理されており、最初の列が「A」または「C」に等しい行のみを表示していることに注意してください。
注: Array()関数には可能な値を 2 つだけ含めましたが、必要なだけ自由に含めることができます。
例 2: 複数の列に複数の条件を指定してオートフィルターを使用する
データセットをフィルターして、Team 列の値が A に等しく、 Position 列の値が Guard に等しい行のみを表示するとします。
これを行うには、次のマクロを作成できます。
Sub FilterMultipleCriteria()
With Range(" A1:C11 ")
.AutoFilter Field:=1, Criteria1:=" A "
.AutoFilter Field:=2, Criteria1:=" Guard "
End With
End Sub
このマクロを実行すると、次の出力が表示されます。
データセットがフィルター処理されて、[Team] 列の値が A に等しく、 [Position] 列の値が Guard に等しい行のみを表示するようになっていることに気付きました。
注: VBA AutoFilterメソッドの完全なドキュメントはここにあります。
追加リソース
次のチュートリアルでは、VBA で他の一般的なタスクを実行する方法について説明します。