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メソッド
についての解説を終了します。
ありがとうございました。

スポンサーリンク
スポンサーリンク

フォローする

スポンサーリンク
スポンサーリンク