日付フィルターでデータを抽出する方法
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を指定して、現在、オートフィルターで、データが絞り込まれている場合にオートフィルターを解除して新たなオートフィルターの設定に備えます。オートフィルターが設定されていないことが明らかな場合でも指定したほうが間違いありません。
Worksheet【ワークシート】オブジェクトのAutoFilterMode【オートフィルターモード】プロパティにFalseを指定して、現在、オートフィルターで、データが絞り込まれている場合にオートフィルターを解除して新たなオートフィルターの設定に備えます。オートフィルターが設定されていないことが明らかな場合でも指定したほうが間違いありません。
2行目【Range(“A1”).AutoFilter Field:=1,Criteria1:=xlFilterThisWeek,Operator:=xlFilterDynamic】
Range【レンジ】オブジェクトのAutoFilter【オートフィルター】メソッドを使用して、A1セルを含むアクティブ領域を対象にAutoFilter【オートフィルター】オブジェクトの日付フィルターを使用してデータを抽出します。
実行結果
以上で、日付フィルターでデータを抽出する方法についての解説を終了します。ありがとうございます。