VBAオジサンのらくがき帳

AutoFilterについて

2021-03-07 00:00:00

RangeオブジェクトのAutoFilterメソッドを使って、オートフィルタ機能をVBAから使う方法についてまとめました。

AutoFilterメソッドのパラメーター

抽出条件で、空白のフィールドを検索するには “=”、空白以外のフィールドを検索するには “<>”を使用します。Operatorが xlTop10Itemsなどの場合は、Criteria1 に項目数(たとえば”10″)を指定します。VisibleDropDown/SubFieldについては、使う場面があまり多くなさそうなので、今回のサンプルでは使っていません。

使い方サンプル

一つの条件だけで絞り込む

Range("A1").AutoFilter 1, "ABC"
Range("A1").AutoFilter 1, ">1"

絞り込みの解除(指定した列だけ解除される)

Range("A1").AutoFilter 1

複数の条件で絞り込む

Range("A1").AutoFilter 1, "AAA", xlOr, "BBB"
Range("A1").AutoFilter 1, ">1", xlAnd, "<100"

上位、下位で絞り込む

Range("A1").AutoFilter 1, "5", xlTop10Items
Range("A1").AutoFilter 1, "10", xlBottom10Items
Range("A1").AutoFilter 1, "5", xlTop10Percent
Range("A1").AutoFilter 1, "10", xlBottom10Percent

複数の値で絞り込む

Range("A1").AutoFilter 1, Array("A", "B", "C", "D"), xlFilterValues

セルやフォントの色で絞り込む

Range("A1").AutoFilter 1, vbYellow, xlFilterCellColor
Range("A1").AutoFilter 1, , xlFilterNoFill
Range("A1").AutoFilter 1, vbRed, xlFilterFontColor
Range("A1").AutoFilter 1, , xlFilterAutomaticFontColor

すべての引数を省略するとAutoFilterの解除ができます。AutoFilterが設定されているときだけ実行するように、下のようにAutoFilterModeをチェックするとよいと思います。

If ActiveSheet.AutoFilterMode Then
    Range("A1").AutoFilter
End If