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

スポンサーリンク

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

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



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

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

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

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

    引数Criteria1に設定できる日付フィルターの定数
    定数内容
    xlFilterToday1当日
    xlFilterYesterday2前日
    xlFilterTomorrow3翌日
    xlFilterThisWeek4今週
    xlFilterLastWeek5先週
    xlFilterNextWeek6来週
    xlFilterThisMonth7今月
    xlFilterLastMonth8先月
    xlFilterNextMonth9来月
    xlFilterThisQuarter10当四半期
    xlFilterLastQuarter11前四半期
    xlFilterNextQuarter12次の四半期
    xlFilterThisYear13今年
    xlFilterLastYear14前年
    xlFilterNextYear15来年
    xlFilterYearToDate16当日から1年前
    xlFilterAllDatesInPeriodQuarter117第1四半期
    xlFilterAllDatesInPeriodQuarter218第2四半期
    xlFilterAllDatesInPeriodQuarter319第3四半期
    xlFilterAllDatesInPeriodQuarter420第4四半期
    xlFilterAllDatesInPeriodJanuary211月
    xlFilterAllDatesInPeriodFebruray222月
    xlFilterAllDatesInPeriodMarch233月
    xlFilterAllDatesInPeriodApril244月
    xlFilterAllDatesInPeriodMay255月
    xlFilterAllDatesInPeriodJune266月
    xlFilterAllDatesInPeriodJuly277月
    xlFilterAllDatesInPeriodAugust288月
    xlFilterAllDatesInPeriodSeptember299月
    xlFilterAllDatesInPeriodOctober3010月
    xlFilterAllDatesInPeriodNovember3111月
    xlFilterAllDatesInPeriodDecember3212月
    xlFilterAboveAverage33平均を上回る値
    xlFilterBelowAverage34平均未満の値

    ※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【オートフィルター】オブジェクトの日付フィルターを使用してデータを抽出します。


実行結果


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

スポンサーリンク

関連記事・広告