VBA オートフィルタの基本的な使い方 AutoFilter

EXCELでオートフィルタの機能をよく使用すると思いますが、
今回は、VBAでオートフィルタを設定する方法を紹介していきます。
複数の条件を指定する方法は、別記事で紹介していきます。

基本的な使い方

オートフィルタを作成する方法を紹介していきます。

Range(対象の範囲).AutoFilter

これで、フィルターを作成することができます。

例を見ていきましょう。
下記のような表を準備しました。

この表にフィルターを付けてみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:D9").AutoFilter
End Sub

 

解説
2行目:セルの範囲を指定し、フィルタを設定

結果

3行目のヘッダーに、フィルターが設定されていることが確認できました。

 

フィルターの条件を設定する方法

AutoFilterメソッドには引数を入力することができます。
先ほどは列と条件を省略していましたが、次は指定してみましょう。

AutoFilterには下記のような5つの引数を指定することができます。

対象のセル.AutoFilter Field, Criteria1, Operator, Criteria2, VisibleDropDown

Filed:対象の列
Critria1:条件1
Operator:条件1と条件2をつなぐ And Orの指定
Criteria2:条件2
VisibleDropDown:ドロップダウンリストの▽を表示するか非表示にするか。

 

今回はFieldとCriteria1について詳しく見ていきます。
Fieldは、フィルターの対象となる列を指定することができます。リストの左端から 1 2 3・・・列となります。
Criteria1は、フィルターの条件を指定することができます。省略することができ、省略した場合は全てが対象になります。

通常の条件指定

例として、社員コード = 0001の値を絞り込んでみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 3, "0001"
End Sub

解説
2行目:Filed=3 3列目社員コードが対象 ,Criteria1="0001" となっている。

結果

社員コードが"0001"のデータのみ表示されていますね。
これが一番基本的な使い方になります。

空白セルのみ表示

続いて空白セルのみを表示してみましょう。
空白セルを表示する場合は少し特殊で"="と指定する必要があります。
例を見ていきます。社員コードが空白のセルを表示しましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 3, "="
End Sub

結果

"="を指定することで社員コードが空白の行のみがフィルターに引っ掛かり表示されています。

 

空白セル以外表示

続いて、空白セル以外の表示について紹介します。
空白セル以外を表示するには "<>"を指定しましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 3, "<>"
End Sub

 

結果

社員コードが空白以外のセルが表示されています。

ワイルドカードを使用するフィルタ

フィルターの条件にワイルドカード(*や?など)を指定することもできます。
例として、会社コードがAから始まるデータを表示してみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 1, "A*"
End Sub

結果

ワイルドカードを使用することで、「~を含む」の条件でフィルターを掛けることができるようになります。

数値の条件

数値を扱っているデータの場合、不等号を使用することができます。
例として年齢が20以上のデータを表示してみましょう。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 5, ">=20"
End Sub

結果

E列の年齢の部分でフィルターがかかっています。
年齢が20以上のデータが表示されていますね。

日付の条件

日付の条件を指定する方法を紹介します。
日付も今までと同様にフィルターを指定することができます。

入社日が"2018/4/2"のデータを表示してみます。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 6, "2018/4/2"
End Sub

結果

F列入社日が2018/4/2のデータのみが表示されています。

 

また、不等号も使用することができます。
入社日が"2018/4/2"より未来の日付のデータを表示してみます。

Private Sub cmdAutoFilter_Click()
    Range("A3:F10").AutoFilter 6, ">2018/4/2"
End Sub

 

結果

未来日付のみが表示されていますね。
このように日付の場合も簡単にフィルターを掛けることができます。

 

まとめ

今回は、オートフィルターの基本的な使い方を紹介していきました。

対象のセル.AutoFilter Field, Criteria1, Operator, Criteria2, VisibleDropDown

オートフィルタの基本的な機能だけでよい場合は、FiledとCriteria1のみでフィルターを掛けることができます。
複数条件を指定してフィルターを掛ける方法など複雑なオートフィルタについては、別記事で紹介していきます。

 

EXCEL VBAの記事一覧

おすすめの記事