AdvancedFilterメソッド
AdvancedFilter は抽出結果を別の場所にコピーすることができ、
AutoFilter よりも柔軟な絞り込み条件を設定することが可能です。
オートフィルタでは補えない複雑な条件や複数列抽出ができることが特徴です。
構文
Object.AdvancedFilter (Action, CriteriaRange, CopyToRange, Unique)
| Object | Range オブジェクトを表す変数です。 |
| Action | 検索結果を他の範囲にコピーするか、そのまま表示するかを指定します。 下記の XlFilterActionクラス定数 を使用します。 |
| CriteriaRange | 検索条件範囲を指定します。 省略すると、検索条件なしで抽出されます。 |
| CopyToRange | 抽出結果の貼り付け先です。Action でコピーを選んだときだけ必要です。 |
| Unique | Ture に設定すると条件に一致するデータのうち、重複するデータを省きます。 False は重複データも抽出されます。 既定値は False です。 |
| XlFilterAction定数 | 値 | 説明 |
| xlFilterCopy | 2 | 抽出結果を新しい場所にコピーします。 |
| xlFilterInPlace | 1 | 抽出結果をそのまま表示します。 |
サンプルコード
以下をA1セルに貼り付けてください。
| 日付 | 担当者 | 個数 | 個数 | |
| 1月1日 | Aさん | 50 | >50 | |
| 1月2日 | Bさん | 100 | ||
| 1月3日 | Aさん | 50 | ||
| 1月4日 | Cさん | 70 |
Public Sub Sample()
Worksheets.Add.Name = "Sheet2" '「Sheet2」を追加
'C列の「個数」が50よりも大きいデータを絞り込み
'「Sheet2」に抽出結果をコピーして貼り付ける
Worksheets("Sheet1").Range("A1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, _
CriteriaRange:=Worksheets("Sheet1").Range("E1:E2").CurrentRegion, _
CopyToRange:=Worksheets("Sheet2").Range("A1")
End Sub
注意点
- 上記サンプルコードでは、E1:E2に抽出条件を表記しています。
抽出データと抽出条件の見出しが一致している必要があります。
※E1の「個数」と元データC1の「個数」が一致しています。
関連記事



コメント