HOME > VBAサンプル集 > オートフィルタの設定

オートフィルタの設定

 エクセルでおなじみのオートフィルタ機能、エクセルを使い始めてしばらくすると覚える機能のうちの一つだと思います。

 入力されたデータをオートフィルタ機能を使うことにより、特定のデータだけ表示させることができます。この機能はエクセルを利活用する上でも重要です。ぜひVBAからもオートフィルタ機能をコントロールできるようにマスターしましょう。

 まずはオートフィルタの設定をしましょう。下図のサンプルデータを使用します。

サンプルデータ

 次のコードでオートフィルタを設定し、取引先「山田商事(株)」で絞り込みます。表の一部を指定するとオートフィルタの範囲は自動で判断してくれます。

 「AutoFilter Field:=2」で、表の左から数えて2列目を指定、「Criteria1:="山田商事(株)"」で山田商事(株)で絞り込みます。

・オートフィルタ設定コード
Sub Sample01()


Range("A1").AutoFilter Field:=2, Criteria1:="山田商事(株)"


End Sub

 下図が結果になります。左から2列目のB列で山田商事を絞り込んでいます。

オートフィルター絞り込み

複数条件で絞り込み

 次に最初のデータを利用して複数条件の絞り込みをやってみましょう。取引先は「山田商事(株)」で数量が10ケ以上のコードを絞り込んでみましょう。

・オートフィルタ設定コード
Sub Sample01()


Range("A1").AutoFilter Field:=2, Criteria1:="山田商事(株)"
Range("A1").AutoFilter Field:=5, Criteria1:=">=10"


End Sub

 上記コードを入力した結果が下図です。取引先は「山田商事(株)」で数量が10ケ以上が絞り込まれています。

複数条件で絞り込む

一列で2つの条件で絞り込む

 次に一つの列で複数条件を絞り込む方法を説明します。エクセル2003までは「xlAnd」および「xlOr」を利用して一つの列で2つまで絞り込むことができます。

 「xlAnd」を利用すると両方の条件を含むものが選択され、「xlOr」を使用するとどちらかの条件を含むものが選択されます。

・「xlOr」でどちらかの条件(山田商事(株)と(有)テクノ)に該当するものを絞り込む。
Sub Sample02()


Range("A1").AutoFilter Field:=2, Criteria1:="山田商事(株)", Operator:=xlOr, Criteria2:="(有)テクノ"


End Sub

上記コードを実行したものが下図の結果になります。

一列で2つの条件で絞り込む

一列で3つ以上の条件で絞り込む

 エクセル2007からは一列に3つ以上の条件で絞り込むことができるようになりました。

 「Field:=2」で2列目を指定しています。一つの列で3つ以上の条件で指定するため、引数Criteria1に配列形式で指定し、引数Operatorに定数xlFilterValuesを指定します。

 定数xlFilterValuesはエクセル2007から追加されています。以前のバージョンのエクセルで使用するとエラーになります。

・3つ以上の条件で絞り込みをする
Sub Sample03()


Range("A1").AutoFilter Field:=2, Criteria1:=Array("山田商事(株)", "(有)テクノ", "森本商店(有)"), Operator:=xlFilterValues


End Sub

上記コードを実行したものが下図の結果になります。

3つ以上の状況で絞り込む

色々な条件指定

 条件指定方法が色々あるので、紹介していきます。組み合わせによって複雑な条件を指定することもできます。

・山田商事(株)と等しい
Criteria1:="山田商事(株)"


・山田商事(株)と等しくない
Criteria1:="<>山田商事(株)"


・部分一致(アスタリスクを付ける)
Criteria1:="山田*" 山田で始まる
Criteria1:="*山田*" 山田を含む
Criteria1:="*山田" 山田で終わる
・空欄
Criteria1:=""


・空欄ではない
Criteria1:="<>"


・数値の比較
Criteria1:="100"  100と等しい
Criteria1:=">100" 100より大きい
Criteria1:="<=100" 100以下


・日付の絞り込み
Criteria1:=">2017/1/1"

 上記のコードの場合は2017年1月1日より大きい、すなわち2017年1月2日から現在までを指しています。

エクセル職人        VBAサンプル集目次

▲TOPへ移動