VBA オートフィルタ

Written by

Mel Jenkins

Reviewed by

Steve Rynearson

Translated by

masahiro yoshida

Last updated on 4月 24, 2022

VBAでは、Excelのオートフィルを使用して、セル範囲やExcelの表をフィルタリングすることができます。

注:VBAで高度なフィルタを使用する方法を知りたい場合は、ここをクリックしてください: VBAの高度なフィルタ

VBAでオートフィルタを作成する

まず、ユーザーがデータにフィルタをかけることができるように、範囲にオートフィルタをかける方法を紹介します。例で使用するデータは画像1です。

vba autofilter data

以下は、オートフィルタを作成するためのコードです。

Sheet1.Range("A1:E1").AutoFilter

AutoFilterを有効にするには、範囲のヘッダー(この場合はA1:E1)を指定し、RangeオブジェクトのAutoFilterメソッドを使用する必要があります。その結果、このデータ範囲ではフィルタが有効になりました。

vba autofilter enabled

画像2.オートフィルタが有効なデータ

FieldとCriteriaパラメータを使ったオートフィルタ

VBAでは、特定のフィールドを特定の値で自動的にフィルタリングすることも可能です。 これを行うには、パラメータ FieldCriteria1を使用します。この例では、3番目の列(製品)を製品Aのみにフィルタリングしたいと思います。以下はそのコードです。

Sheet1.Range("A1:E1").AutoFilter Field:=3, _
                                 Criteria1:="Product A"

Fieldパラメータには、範囲内の列の番号を設定し(Excelにはない)、Criteria1にはフィルタリングしたい値を入れます。このコードを実行すると、テーブルは次のようになります。

vba autofilter field criteria

画像3.フィールドと条件を含むオートフィルタ

このように、3列目に製品Aを含む行だけがデータ範囲に表示されます。

Fieldと複数のCriteriaを使ったオートフィルタ

1つのフィールドを複数の値でフィルタリングしたい場合は、オートフィルタメソッドのパラメータOperatorを使用します。複数の値をフィルタリングするには、OperatorxlFilterValues に設定し、Criteriaのすべての値を 配列に入れておく必要があります。この例では、Product列をProduct AProduct Bでフィルタリングします。

Sheet1.Range("A1:E1").AutoFilter Field:=3, _
                                 Criteria1:=Array("Product A", "Product B"), _
                                 Operator:=xlFilterValues

このコードを実行すると、画像4に示すように、商品Aと商品Bを含む行だけが取得されます。

vba autofilter field multiple criteria

画像4.複数の基準値を持つオートフィルタ

複数のCriteriaによるデータ範囲のオートフィルタ

複数の基準でフィールドをフィルタリングする場合、Criteria1Criteria2パラメータだけでなく、xlAnd 演算子も使用する必要があります。 次の例では、2018年12月の日付について、最初の列(Date)をフィルタリングすることにします。したがって、18年12月1日より大きい日付と18年12月31日より小さい日付という2つの基準を用意します。これがそのコードです。

Sheet1.Range("A1:E1").AutoFilter Field:=1, _
                                 Criteria1:=">=12/01/2018", _
                                 Operator:=xlAnd, _
                                 Criteria2:="<=12/31/2018"

コードを実行すると、データ範囲に12月の日付だけが表示されていることがわかります。

vba autofilter multiple criteria

画像5.フィールドに複数の基準値を持つオートフィルタ

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

次の表は、AutoFilterメソッドのOperator パラメータに指定できるすべての値とその説明を示しています。

Operator 説明
xlAnd 条件1および条件2のいずれも含む
xlOr 基準1または基準2のいずれかを含む
xlTop10Items 上から順番に一定数(Criteria1で指定した数)をフィルタする
xlBottom10Items 下から順番に一定数(Criteria1で指定した数)をフィルタする
xlTop10Percent 上から順番に一定割合(Criteria1で指定した%)をフィルタする
xlBottom10Percent 下から順番に一定割合(Criteria1で指定した%)をフィルタする
xlFilterValues 配列に入っている複数の基準値を含む
xlFilterCellColor セルの背景色でフィルタする
xlFilterFontColor フォントの色でセルをフィルタする
xlFIlterIcon アイコンをフィルタする
xlFilterDynamic 動的な値をフィルタする
vba-free-addin

VBA Code Examples Add-in

Easily access all of the code examples found on our site.

Simply navigate to the menu, click, and the code will be inserted directly into your module. .xlam add-in.

(No installation required!)

Free Download

Return to VBA Code Examples