オートフィルターとテーブルの違いについて
・フィルターはテーブルの機能の一つである。
よって(テーブル > フィルター)
オートフィルターを使ってみよう
オートフィルターの有無を確認する。
sheet.AutoFilterMode
・AutoFilterModeを参照する (True/False)
オートフィルターを削除する。
sheet.AutoFilterMode = False
オートフィルターを追加する。
' 単一セルの場合 : 全体(A1 ~ CurrentRegion)にフィルターがかかる。
Range("A1").AutoFilter
' 複数セルの場合 : その領域だけフィルターがかかる。
Range("B3:C5").AutoFilter
オートフィルターで絞り込みを行う。
単一列の絞り込み
' フィルターの「3」列目の「セルの値」が「100」となる絞り込みを掛ける。
Range("A1").AutoFilter Field:=3, Criteria1:="100", Operator:=xlFilterValues
複数列の絞り込み
' AutoFilterでチェインする。
Range("A1").AutoFilter Field:=3, Criteria1:="100", Operator:=xlFilterValues _
.AutoFilter Field:=4, Criteria1:="ABC", Operator:=xlFilterValues
OR条件の絞り込み
' いずれかのワードを含む
.Range("A1").AutoFilter Field:=4, Criteria1:="*削除*", _
Field:=4, Criteria2:="*不要*", _
Operator:=XlAutoFilterOperator.xlOr
And条件の絞り込み
' いずれのワードも含む
.Range("A1").AutoFilter Field:=4, Criteria1:="*削除*", _
Field:=4, Criteria2:="*不要*", _
Operator:=XlAutoFilterOperator.xlAnd
一致条件の指定 (Criteria)
記載 | 意味 |
---|---|
="100" | 100と一致する |
="<>100" | 100と一致しない |
="" | ブランク |
= ABC | ABCを含む |
= ?BC | 2,3文字目がBC |
オートフィルターで絞り込みの結果をコピーする。
' 結果の2行目をコピーする。
Range("A1").AutoFilter Field:=3, Criteria1:="100", Operator:=xlFilterValues _
.Column(2).Copy
| 名前 | 内容 |
|:-:|:-:|:-:|
| Field | フィルターの列数 |
| Criteria1 | フィルターの絞り込み条件 |
| Operator | 何と比較して絞り込むか。(セルの値、セルの色 etc) |
アドバンスフィルターで重複削除
sheetEmployee.Columns("C:F").AdvancedFilter _
Action:=xlFilterCopy, _
CopyToRange:=sheetDepartment.range("A1"), _
Unique:=True
記載 | 意味 |
---|---|
Action | データの転記方法 |
CopyToRange | データの転記先 |
Unique | データ重複を削除するか |
・データの転記と重複削除を非常に簡潔に記載できる。 | |
・処理速度は早くないので、大量データには向かない。 |
オートフィルターの使いどころ
大量データのうち、該当件数が少数の場合、
1件ずつ走査するよりも、フィルターでまとめて該当部分を抜き取ったほうが処理がはやい!
参考