表などに対して、ある条件でフィルタをかけたい場合、AutoFilter メソッドを使用します。フィルタをかけると、フィルタの条件に合致した行だけ表示され、それ以外の行は非表示になります。
引数をすべて省略するとフィルタはかけずに、ドロップダウンの矢印のみ表示します。ドロップダウンの矢印を表示すると、手動でフィルタをかけることができます。
AutoFilterメソッドの使用方法
引数名 | 省略 | 定数/データ型 | 説明 |
---|---|---|---|
Field | ○ | Variant型 | フィルタの対象となるフィールド番号を整数で指定します。フィールド番号は、リストの左側’1’から始まります。 |
Criteria1 | ○ | Variant型 | 抽出条件となる文字列を指定します。 “=” と指定すると、空白セルが抽出され、”<>” と指定すると空白以外のフィールドが抽出されます。 省略すると、抽出条件は All になります。 |
Operator | ○ | xlAnd | 抽出条件 1 と抽出条件 2 の論理演算子 AND |
xlBottom10Items | 表示される最低値項目 (抽出条件 1 で指定される項目数) | ||
xlBottom10Percent | 表示される最低値項目 (抽出条件 1 で指定される割合) | ||
xlFilterCellColor | セルの色 | ||
xlFilterDynamic | 動的フィルタ | ||
xlFilterFontColor | フォントの色 | ||
xlFilterIcon | フィルタ アイコン | ||
xlFilterValues | フィルタの値 | ||
xlOr | 抽出条件 1 または抽出条件 2 の論理演算子 OR | ||
xlTop10Items | 表示される最高値項目 (抽出条件 1 で指定される項目数 | ||
xlTop10Percent | 表示される最高値項目 (抽出条件 1 で指定される割合) | ||
Criteria2 | ○ | Variant型 | 2 番目の抽出条件となる文字列を指定します。 引数 Criteria1 および引数 Operator と組み合わせて使い、複合抽出条件を指定します。 |
VisibleDropDown | ○ | Variant型 | True を指定すると、フィルタのフィールドにあるオートフィルタのドロップダウン矢印を表示します。 False を指定すると、ドロップダウン矢印を表示しません。 既定値は True です。 |
AutoFilterメソッドの使用例
1項目1条件
1つの項目(列)に対して1つの条件でフィルタをかける例です。以下の例では1月の売上が100万以上の行を表示します。
Sub sample_b06h_01()
With ActiveSheet
'オートフィルター設定済を考慮して、一旦オートフィルターを解除
.AutoFilterMode = False
'ヘッダー行(3行目)に対してAutoFilterメソッドを使用し、
'1月(Field=2)の売上が100万以上を表示
.Rows(3).AutoFilter _
Field:=2, _
Criteria1:=">=100"
End With
End Sub
ワークシートのAutoFilterModeプロパティ
Withステートメント
1項目2条件
1つの項目(列)に対して2つの条件(AND)でフィルタをかける例です。以下の例では1月の売上が100万以上、200万未満の行を表示します。
Sub sample_b06h_02()
With ActiveSheet
'オートフィルター設定済を考慮して、一旦オートフィルターを解除
.AutoFilterMode = False
'ヘッダー行(3行目)に対してAutoFilterメソッドを使用し、
'1月(Field=2)の売上が100万以上かつ200万未満を表示
.Rows(3).AutoFilter _
Field:=2, _
Criteria1:=">=100", _
Operator:=xlAnd, _
Criteria2:="<200"
End With
End Sub
ワークシートのAutoFilterModeプロパティ
Withステートメント
2項目1条件
2つの項目(列)に対してそれぞれ1つの条件でフィルタをかける例です。以下の例では1月と3月の売上がともに100万以上の行を表示します。
Sub sample_b06h_03()
With ActiveSheet
'オートフィルター設定済を考慮して、一旦オートフィルターを解除
.AutoFilterMode = False
'ヘッダー行(3行目)に対してAutoFilterメソッドを使用し、
'1月(Field=2)と3月(Field=4)の売上がともに100万以上を表示
.Rows(3).AutoFilter _
Field:=2, _
Criteria1:=">=100"
.Rows(3).AutoFilter _
Field:=4, _
Criteria1:=">=100"
End With
End Sub
ワークシートのAutoFilterModeプロパティ
Withステートメント
上位3つを抽出
1つの項目(列)に対して1つの条件でフィルタをかける例です。以下の例では1月の売上上位3つを表示します。
上位3つというフィルタ条件を指定して AutoFilter メソッドを実行すると原因不明のエラーが発生します。以下の例では、一度引数なしで AutoFilter メソッドを実行してから、再度フィルタ条件を指定して AutoFilter メソッドを実行することでこのエラーを回避しています。この方法が正しいかどうかはわからず、このようにするとエラーが発生しないというものです。何か原因がわかり次第、内容を更新したいと思います。
Sub sample_b06h_04()
With ActiveSheet
'オートフィルター設定済を考慮して、一旦オートフィルターを解除
.AutoFilterMode = False
With .Rows(3) 'ヘッダーの行を指定すればok
'エラー回避のため、一度オートフィルターだけ設定
.AutoFilter
'1月(Field=2)の売上上位3つを表示
.AutoFilter _
Field:=2, _
Criteria1:="3", _
Operator:=xlTop10Items
End With
End With
End Sub