AdvancedFilter【アドバンスドフィルターメソッド】メソッド
フィルターオプションの設定をすれば、さまざまな条件を指定してデータを抽出することができます。
VBAでフィルターオプションの設定を操作するには、Range【レンジ】オブジェクトのAdvancedFilter【アドバンスドフィルター】メソッドを使用します。
フィルターオプションのダイアログボックスと
AdvancedFilter【アドバンスドフィルター】メソッドの引数の関係
AdvancedFilter【アドバンスドフィルターメソッド】メソッドの書式と設定値(引数)の説明
[]内は省略可能です。
オブジェクト.AdvancedFilter( Action[, CriteriaRange, CopyToRange, Unique] )
- オブジェクト(必須)
抽出元となるセル範囲をRangeオブジェクトで指定します。 - Action【アクション】(必須)
抽出先をxlFilterAction列挙型の定数で指定します。xlFilterAction列挙型 定数 値 内容 xlFilterInPlace 1 抽出元の表を折りたたんで表示します。 xlFilterCopy 2 引数CopyToRangeで指定したセル範囲に
データをコピーして抽出します。 - CriteriaRange【クライテリアレンジ】(省略可)
ワークシート上に作成した
抽出条件を設定する範囲をRangeオブジェクトで指定します。 - CopyToRange【コピートゥレンジ】(省略可)
抽出先を表す引数Action【アクション】がXlFilterCopy(指定したセル範囲にデータをコピー)のときに有効になり、抽出先となるセル範囲をRangeオブジェクトで指定します。
※引数Action【アクション】がXlFilterCopyのときは必ず設定します。 - Unique【ユニーク】(省略可)
重複データを抽出するかどうするかをブール型の値で指定します。設定値 内容 True 重複データは抽出されません。 False 重複データの抽出されます(既定値) ※省略した場合はFalseが指定されます。
使用例 実行イメージ
コード例
Sub フィルターオプション() Range("A5").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, _ CriteriaRange:=Range("A1").CurrentRegion End Sub
抽出方法の設定方法
AdvancedFilter【アドバンスドフィルター】メソッドの引数CriteriaRange【クライテリアレンジ】には、
ワークシート上に作成した抽出条件範囲を指定します。
AND条件(AかつB)の場合は同じ行に抽出条件を記述し、OR条件(AまたはB)の場合は異なる行に抽出条件を記述します。
抽出条件は、比較演算子やワイルドカードの
(「*」複数文字の代用)や(「?」1文字の代用)を使用して設定できます。
抽出条件 | 記述方法 |
---|---|
Aと等しい | “A” |
Aと等しくない | “<>A” |
Aを含む | “*A*” |
空白セル | “=” |
空白以外のセル | “<>” |
5よりおおきい | “>5” |
5以上 | “>=5” |
5より小さい | “<5” |
5以下 | “<=5” |
売上日が2017/4/2以上AND(かつ)2017/4/4以内のデータを抽出する例
売上日が2017/4/2以上AND(かつ)2017/4/4以内OR(または)地区がA地区のデータを抽出する例
担当者が「田」を含むデータを抽出する例
フィルターモードを解除してすべてのデータを表示する方法
AdvancedFilter【アドバンスドフィルター】メソッドによって、データの抽出が実行されている状態(フィルターモード)のときに、フィルターモードを解除して、すべてのデータを表示するには、WorkSheet【ワークシート】オブジェクトのShowAllData【ショウオールデータ】メソッドを使用します。
フィルターモードではないときに、このメソッドを実行するとエラーになるのでフィルターの抽出状態を取得するWorkSheet【ワークシート】オブジェクトのFilterMode【フィルターモード】プロパティがTrueのとき(フィルターモードのとき)を条件分岐で定義してから実行します。
フィルターモードを解除するコード例
Sub フィルター解除() If ActiveSheet.FilterMode Then ActiveSheet.ShowAllData End If End Sub
AdvancedFilter【アドバンスドフィルター】メソッドを使用したコード例リンク
以上で、フィルターオプションを表すAdvancedFilterメソッドについての解説を終了します。ありがとうございました。