Excel VBA オートフィルターの日付フィルターでデータを抽出する

スポンサーリンク

日付フィルターでデータを抽出する方法

Excel2007からのオートフィルターには、日付が入力されている列に選択した期間によって抽出対象がダイナミックに変化する「日付フィルター」を適用できます。



この機能をVBAから利用するには、Range【レンジ】オブジェクトのAutoFilter【オートフィルター】メソッドの抽出条件を表す引数Operator【オペレーター】に動的フィルターを表す「xlFilterDynamic」を設定し1つめの抽出条件となる文字列を表す引数Criteria1【クライテリアワン】に、日付フィルターの定数を指定して実行します。

「日付フィルター」を使用する書式と設定値(引数)の説明

オブジェクト.AutoFilter ( Field ,Criteria1, Operator )

  • オブジェクト(必須)
    抽出元となるセル範囲をRange【レンジ】オブジェクトで指定します。単一セルを指定した場合は、そのセルを含むアクティブ領域が対象になります。
  • Field【フィールド】(必須)
    抽出対象となる日付が入力されている列番号をアクティブセル領域の左からの順番の番号で指定します。
  • Criteria1【クライテリアワン】(必須)
    以下の「日付フィルター」の定数を指定します。

    引数Criteria1に設定できる日付フィルターの定数
    定数 内容
    xlFilterToday 1 当日
    xlFilterYesterday 2 前日
    xlFilterTomorrow 3 翌日
    xlFilterThisWeek 4 今週
    xlFilterLastWeek 5 先週
    xlFilterNextWeek 6 来週
    xlFilterThisMonth 7 今月
    xlFilterLastMonth 8 先月
    xlFilterNextMonth 9 来月
    xlFilterThisQuarter 10 当四半期
    xlFilterLastQuarter 11 前四半期
    xlFilterNextQuarter 12 次の四半期
    xlFilterThisYear 13 今年
    xlFilterLastYear 14 前年
    xlFilterNextYear 15 来年
    xlFilterYearToDate 16 当日から1年前
    xlFilterAllDatesInPeriodQuarter1 17 第1四半期
    xlFilterAllDatesInPeriodQuarter2 18 第2四半期
    xlFilterAllDatesInPeriodQuarter3 19 第3四半期
    xlFilterAllDatesInPeriodQuarter4 20 第4四半期
    xlFilterAllDatesInPeriodJanuary 21 1月
    xlFilterAllDatesInPeriodFebruray 22 2月
    xlFilterAllDatesInPeriodMarch 23 3月
    xlFilterAllDatesInPeriodApril 24 4月
    xlFilterAllDatesInPeriodMay 25 5月
    xlFilterAllDatesInPeriodJune 26 6月
    xlFilterAllDatesInPeriodJuly 27 7月
    xlFilterAllDatesInPeriodAugust 28 8月
    xlFilterAllDatesInPeriodSeptember 29 9月
    xlFilterAllDatesInPeriodOctober 30 10月
    xlFilterAllDatesInPeriodNovember 31 11月
    xlFilterAllDatesInPeriodDecember 32 12月
    xlFilterAboveAverage 33 平均を上回る値
    xlFilterBelowAverage 34 平均未満の値

    ※2月を表す定数「xlFilterAllDatesInPeriodFebruray」に関して
    2月のスペルは「February」ですが、この定数では「Februray」と
    スペルが間違えて登録されています。

  • Operator【オペレーター】(必須)
    「動的フィルター」を表す定数xlFilterDynamicを設定します。

「日付フィルター」で今週を抽出するコードと解説

Sub 日付フィルター()
ActiveSheet.AutoFilterMode = False
Range("A1").AutoFilter Field:=1,Criteria1:=xlFilterThisWeek,Operator:=xlFilterDynamic
End Sub
1行目【ActiveSheet.AutoFilterMode = False】
Worksheet【ワークシート】オブジェクトのAutoFilterMode【オートフィルターモード】プロパティにFalseを指定して、現在、オートフィルターで、データが絞り込まれている場合にオートフィルターを解除して新たなオートフィルターの設定に備えます。オートフィルターが設定されていないことが明らかな場合でも指定したほうが間違いありません。


2行目【Range(“A1”).AutoFilter Field:=1,Criteria1:=xlFilterThisWeek,Operator:=xlFilterDynamic】
Range【レンジ】オブジェクトのAutoFilter【オートフィルター】メソッドを使用して、A1セルを含むアクティブ領域を対象にAutoFilter【オートフィルター】オブジェクトの日付フィルターを使用してデータを抽出します。


実行結果


以上で、日付フィルターでデータを抽出する方法についての解説を終了します。ありがとうございます。

スポンサーリンク

関連記事・広告