【EXCEL VBA】オートフィルタの基本を知りたい

VBAからオートフィルタで条件設定する方法を紹介します。

今回は、基本となる文字列での条件設定、加えてワイルドカード、否定、複数条件(論理和、論理積)まで一気に解説します。

事前準備

データを準備します。こちらのデータは、テストデータ生成サイトで作成しました。

オートフィルタの基礎

オートフィルタを行うには、AutoFilter関数を利用します。構文は以下となります。AutoFilter引数およびXlAutoFilterOperatorの定数の説明を載せますが、さらっと流してください。サンプルプログラムを見てもらったほうが理解が早いと思います。

Range.AutoFilter (Field, Criteria1, Operator, Criteria2, SubField, VisibleDropDown)

AutoFilterの引数

引数名必須/省略可能データ型説明
Field省略可Variantフィルター対象となる列番号を指定します。リストの左側から1から始まります。
Criteria1省略可Variant抽出条件を指定します。(例えば”101″ などの文字列)。
Operator省略可XlAutoFilterOperatorXlAutoFilterOperatorの定数でフィルターの種類を指定します。
Criteria2省略可VariantCriteria1およびOperatorと組み合わせて、2 番目の抽出条件を指定します。複合抽出条件を指定できます。
SubField省略可Variant使用することはないので説明省略
VisibleDropDown省略可VariantTrue/Falseを指定する。ドロップダウン矢印の表示非表示を生業します。既定値はTrueです。

XlAutoFilterOperatorの定数

名前説明
xlandcriteria1およびCriteria2の論理積
xlorcriteria1またはCriteria2の論理和
xlfiltervaluesフィルターの値
xlBottom10Items表示される最低値項目(引数criteria1で指定されているアイテムの数)
xlBottom10Percent表示される最低値項目(引数criteria1で指定される割合)
xlfiltercellcolorセルの色
xlfilterdynamic動的フィルター
xlfilterfontcolorフォントの色
xlfiltericonフィルターアイコン
xlTop10Items表示される最高値項目(引数criteria1で指定されているアイテムの数)
xlTop10Percent表示される最高値項目(引数criteria1で指定される割合)

サンプルプログラム

普通に文字列でフィルタリングです。数値の4は、4列目を意味します。

Sub sample1()

    ' 指定列を文字列でフィルタ
    Range("A1").AutoFilter 4, "秋田県"

End Sub

ワイルドカード(* または ?)を使いたい場合は、そのまま指定でOKです。

Sub sample2()

    ' 指定列を文字列でフィルタ(ワイルドカード)
    Range("A1").AutoFilter 4, "*府"

End Sub

否定を使いたい場合は、<>を指定します。ワイルドカードとの組み合わせも可能です。

Sub sample3()

    ' 指定列を文字列でフィルタ(否定)
    Range("A1").AutoFilter 4, "<>*県"

End Sub

複数条件(論理和)を使いたい場合は、xlOrを指定します。引数は4つに増えます。

Sub sample4()

    ' 指定列を2つの文字列でフィルタ(論理和:xlOr)
    Range("A1").AutoFilter 4, "秋田県", xlOr, "山形県"

End Sub

複数条件(論理積)を使いたい場合は、xlAndを指定します。

Sub sample5()

    ' 指定列を2つの文字列でフィルタ(論理積:xlAnd)
    Range("A1").AutoFilter 4, "大*", xlAnd, "*県"

End Sub

3つ以上の条件を指定したい場合は、配列およびxlFilterValuesを指定します。

Sub sample6()

    ' 指定列を3つ以上の文字列でフィルタ(論理和:XlFilterValues)
    Range("A1").AutoFilter 4, Array("東京都", "千葉県", "神奈川県", "埼玉県"), xlFilterValues

End Sub