今回は、ExcelのVBAを使用して自動でオートフィルターをかける方法を紹介します。
マクロでオートフィルターをかける
VBAでフィルターを設定する場合は、Autofilterメソッドを使います。
実行範囲:フィルタをかけたい範囲(シート名.セル範囲を指定)
対象列:フィルタ範囲の中で何列目を調べるか指定する。「field:=2」で2列目という意味
絞り込み条件:データ絞り込みの条件を指定する。「Criteria1:="<>0」でデータの中で「0以外」を表示させるという意味
Autofilter実践編
文字だけでは分かりづらいので実際にサンプルを見てみましょう。
この表の中で数量が「0以外」のデータをマクロで抽出したいと思います。
使うコードはこちら:
Sub test()
Sheet1.Range("A1:B5").AutoFilter field:=2, Criteria1:="<>0"
End Sub
実行結果:
フィルターがかかり、数量が「0」のデータ「みかん」が非表示になり、それ以外の品目が表示されました。
複数条件(2つ)を指定する場合
先ほどのAutofilter実践編では、数量が「0以外」のデータのみを抽出しました。
では次に、条件を2つ指定したい場合の処理について解説します。
先ほどのコードに引数Operatorを設定し、絞り込み条件(Criteria2)を追加しました。
Operatorには、xlOr(または)もしくは、xlAnd(かつ)を指定します。2つの条件のうち、「どちらか」なのか「どちらも」なのかで使い分けをしましょう。
Criteria2には、絞り込み条件1と同じようにデータの絞り込み条件を指定しましょう。
では、この表の中で数量が「0以外」と「空白」の2つのデータをマクロで抽出したいと思います。
使うコードはこちら:
Sub test()
Sheet1.Range("A1:B5").AutoFilter field:=2, Operator:=xlAnd, Criteria1:="<>0", Criteria2:="<>"
End Sub
実行結果:
数量が0の「みかん」のデータと数量が空白の「ぶどう」のデータが非表示となりました。これで2つの条件の両方が実行されたことが分かります。
ちなみに、複数条件(2つ)を指定する場合は、上記の方法で大丈夫ですが、3つ以上の条件指定が必要な場合には、配列での処理となります。
その方法については、こちらの記事で紹介しています。
-
【ExcelVBA】マクロで複数条件(3つ以上)の場合にオートフィルターをかける方法を紹介
続きを見る
最後まで見ていただきありがとうございます!