Excel VBA フィルターオプションを表すAdvancedFilterメソッド

スポンサーリンク

AdvancedFilter【アドバンスドフィルターメソッド】メソッド

フィルターオプションの設定をすれば、さまざまな条件を指定してデータを抽出することができます。

VBAでフィルターオプションの設定を操作するには、Range【レンジ】オブジェクトのAdvancedFilter【アドバンスドフィルター】メソッドを使用します。

フィルターオプションのダイアログボックスと
AdvancedFilter【アドバンスドフィルター】メソッドの引数の関係


AdvancedFilter【アドバンスドフィルターメソッド】メソッドの書式と設定値(引数)の説明

[]内は省略可能です。
オブジェクト.AdvancedFilter( Action[, CriteriaRange, CopyToRange, Unique] )

  • オブジェクト(必須)
    抽出元となるセル範囲をRangeオブジェクトで指定します。
  • Action【アクション】(必須)
    抽出先をxlFilterAction列挙型の定数で指定します。

    xlFilterAction列挙型
    定数内容
    xlFilterInPlace1抽出元の表を折りたたんで表示します。
    xlFilterCopy2引数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メソッドについての解説を終了します。ありがとうございました。

スポンサーリンク

関連記事・広告