Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
Rangeの部分にはオートフィルタを適用させる範囲のリストの左上のセルを表記します。
エクセルにある機能のオートフィルタと同様です。
Excelの97-2003までは1フィールドにおける複数条件は2つまでとなっています。
Excel2007以降で2つ以上の複数条件で抽出する場合は引数Operatorに定数xlFilterValuesを指定し、Criteria1の条件を配列としてArrayを用いて指定します。
また、異なるフィールド(列)に対して条件を設定する場合は、AutoFilterメソッドを2度連続して支持すれば複数フィールドに条件が設定できます。
Rangeの部分にはオートフィルタを適用させる範囲のリストの左上のセルを表記します。
エクセルにある機能のオートフィルタと同様です。
Excelの97-2003までは1フィールドにおける複数条件は2つまでとなっています。
Excel2007以降で2つ以上の複数条件で抽出する場合は引数Operatorに定数xlFilterValuesを指定し、Criteria1の条件を配列としてArrayを用いて指定します。
また、異なるフィールド(列)に対して条件を設定する場合は、AutoFilterメソッドを2度連続して支持すれば複数フィールドに条件が設定できます。
| 名前 | 説明 | 型 | 備考 |
|---|---|---|---|
| Field | フィルタの対象となるフィールド番号 | 整数 | 範囲内の左端の列が"1"順に2,3・・・ |
| Criteria1 | 抽出条件となる文字列(1) | 文字列 | 省略可(既定値:全て対象) |
| Operator | フィルタの種類、抽出条件 | XlAutoFilterOperator
|
省略可(既定値:xlAnd) |
| Criteria2 | 抽出条件となる文字列(2) (Criteria1とOperatorが必要) |
文字列 | 省略可 |
| VisibleDropDown | オートフィルタのドロップダウン矢印 表示有無 |
True or False |
省略可(表示する) (既定値:True) |
例)オートフィルタの条件を2つ設定して該当するレコードのみのデータを作成
Sub AFTes()
Dim ws1 As Worksheet, ws2 As Worksheet
'Worksheetをセット
Set ws1 = ActiveWorkbook.Worksheets(1)
Set ws2 = ActiveWorkbook.Worksheets(2)
'オートフィルタ
'セルA1から始まるリストで3列目に東証1部か東証2部を表示
'Field:=3 3列目
'Criteria1・Criteria2は条件
'Operator:=xlOr は Criteria1・Criteria2の論理演算子OR
ws1.Range("A1").AutoFilter Field:=3, Criteria1:="東証1部", _
Operator:=xlOr, Criteria2:="東証2部"
'表示されている部分のみコピーしてSheet2に貼り付け
ws.Range("A1").CurrentRegion.Columns("A:H").Copy _
Destination:=ws2.Range("A1")
End Sub

◯エラー
抽出する条件と合致するものがない場合には
「実行時エラー '1004':
RangeクラスのAutoFilterメソッドが失敗しました。」
というエラーが出るのでない場合のエラー処理等の記述が必要になる場合もあるかと思います。
解除方法
下記はオートフィルターモードを判定してフィルタを解除する方法です。
If ActiveSheet.AutoFilter.FilterMode = True Then
ActiveSheet.Range("a1").AutoFilter
End If
クリアする方法
オートフィルターの状態のまま全てのフィルタリングをクリアにする方法です。
Sub autof()
'アクティブシートのフィルタをクリアにする
If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData
End Sub