EXCEL VBA オートフィルタでデータの抽出・日付で絞り込む・期間・年月・四半期 (AutoFilter)
EXCEL VBA オートフィルタでデータの抽出・日付で絞り込む・期間・年月・四半期 (AutoFilter)
今回説明するのは、オートフィルター(Autofilter)メゾットを利用して、データを日付で絞り込む方法を説明いたします。オートフィルターには、「日付フィルター」と言う機能がありますが、この機能を使う事で、今月のデータとか昨年のデータとか四半期と言ったデータを絞り込む事ができます。日付のあるデータを絞り込む時にはとても便利だと思います。それでは、サンプルプログラムを交えて順番に説明いたします。
●【EXCEL VBA オートフィルタでデータの抽出・条件・設定方法 (AutoFilter)については、下記を参照して下さい】
●【Range.AutoFilter メソッド (Excel)、下記を参照して下さい】(Microsoft社 様)】
https://learn.microsoft.com/ja-jp/office/vba/api/excel.range.autofilter
● Autofilterメゾット(日付の絞り込み)を利用するには、下記の通りに設定を行います。
・オブジェクト.Autofilter(Field,Criteria1,Operator)
・Field・・・フィルタの対象となるフィールド番号を指定します。
・Criteria1・・・データの抽出条件を指定します。(下記参照)
・Operator・・・絞り込みの定数を指定します。
定数 | 値 | 内容(説明) |
---|---|---|
xlFilterYesterday | 1 | 昨日(前日) |
xlFilterTomorrow | 2 | 明日(翌日) |
xlFilterToday | 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 | 今年の初めから今日まで |
xlFilterAllDatesInPeriodQuarter1 | 17 | 第一四半期 |
xlFilterAllDatesInPeriodQuarter2 | 18 | 第二四半期 |
xlFilterAllDatesInPeriodQuarter3 | 19 | 第三四半期 |
xlFilterAllDatesInPeriodQuarter4 | 20 | 第四四半期 |
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 | 平均未満の値 |
【使用例】
※ A列「設置日」のデータに対して、昨年「xlFilterLastYear」(2021年)の日付で絞り込みます。
1 2 3 4 5 6 7 8 |
' ' Sub Autofilter00() Range("A1").AutoFilter Field:=1, Criteria1:=xlFilterLastYear, Operator:=xlFilterDynamic End Sub ' |
【注意点】
・上記の2月を意味する定数は、「xlFilterAllDatesInPeriodFebruray」ですが、2月の英単語は「February」です。スペルが間違えていますが、上記の「xlFilterAllDatesInPeriodFebruray」の定数で登録しても問題ありません。(EXCEL側で間違えて登録されています)
EXCEL VBA オートフィルタでデータの抽出・日付で絞り込む・特定の日付で絞り込む (AutoFilter)
● Autofilterメゾット(日付の絞り込み)を利用するには、下記の通りに設定を行います。
・オブジェクト.Autofilter(Field,Criteria1)
・Field・・・フィルタの対象となるフィールド番号を指定します。
・Criteria1・・・データの抽出条件を指定します。
【使用例】
※ A列「設置日」のデータに対して、日付指定(2022/10/15)で絞り込みます。
1 2 3 4 5 6 7 8 |
' ' Sub Autofilter01() Range("A1").AutoFilter Field:=1, Criteria1:="2022/10/15" End Sub ' |
EXCEL VBA オートフィルタでデータの抽出・日付で絞り込む・特定の日付で絞り込む (AutoFilter)
● Autofilterメゾット(日付の絞り込み)を利用するには、下記の通りに設定を行います。
・オブジェクト.Autofilter(Field,Operator,Criteria2)
・Field・・・フィルタの対象となるフィールド番号を指定します。
・Operator・・・絞り込みの定数を指定します。:xlFilterValues・・・【フィルターの値を指定します。】
・Criteria2・・・データの抽出条件を指定します。
数値(設定値) | 説明(内容) |
---|---|
0 | 後ろに設定した日付の年 |
1 | 後ろに設定した日付の月 |
2 | 後ろに設定した日付の日 |
3 | 後ろに設定した日付の時 |
4 | 後ろに設定した日付の分 |
5 | 後ろに設定した日付の秒 |
【サンプルプログラム】:A列の日付から2022年10月と2022年12月のデータ抽出します。
【データ抽出説明】:Arrayを使い複数の月を指定します。設定1:で月を対象として抽出しています。(上記表を参照)
1 2 3 4 5 6 7 8 |
' ' Sub Autofilter02() '指定月を選択する方法 Range("A1").AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(1, "2022/10/1", 1, "2022/12/1") 'A列の日付を対象に2022年10月と2022年12月のデータを抽出します。 End Sub ' |
【サンプルプログラム】:A列の日付から2021年と2019年のデータ抽出します。
【データ抽出説明】:Arrayを使い複数の年を指定します。設定0:で年を対象として抽出しています。(上記表を参照)
1 2 3 4 5 6 7 8 |
' ' Sub Autofilter03() '指定年を選択する方法 Range("A1").AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(0, "2019/10/1", 0, "2021/12/1") End Sub ' |
【抽出結果】
【サンプルプログラム】:A列の日付から2022年と2021年及び2020年1月のデータ抽出します。
【データ抽出説明】:Arrayを使い複数の年を指定します。設定0:で年を対象・設定1:で月を対象として抽出しています。(上記表を参照)
1 2 3 4 5 6 7 8 |
' ' Sub Autofilter04() '指定年と指定月を選択する方法 Range("A1").AutoFilter Field:=1, Operator:=xlFilterValues, Criteria2:=Array(0, "2022/10/1", 0, "2021/12/1", 1, "2020/1/1") End Sub ' |
【抽出結果】
EXCEL VBA オートフィルタのドロップダウン矢印を表示・非表示に切り替える。
● Autofilterメゾット/ドロップダウンの矢印(表示・非表示)の設定方法は、下記の通りに設定を行います。
・オブジェクト.Autofilter(Field,VisibleDropDown)
・Field・・・フィルターの対象となるフィールド番号を指定します。
・VisibleDropDown・・・フィルターのドロップダウン矢印を表示・非表示に切り替える事ができます。
Trueは、矢印を表示する。(既定値)
Falseは、矢印を非表示にする。
【サンプルプログラム】:A列とB列のフィルターのドロップダウン矢印を非表示に切り替えます。(一括切替)
1 2 3 4 5 6 7 8 |
' ' Sub Autofilter05() 'ドロップダウン矢印を表示・非表示 (一括指定) Range("A1").AutoFilter Field:=Array(1, 2), VisibleDropDown:=False End Sub ' |
【サンプルプログラム】:A列とC列のフィルターのドロップダウン矢印を非表示に切り替えます。(選択切替)
1 2 3 4 5 6 7 8 9 10 11 12 |
' ' Sub Autofilter06() 'ドロップダウン矢印を表示・非表示 列ごとに指定 With Range("A1") .AutoFilter Field:=1, VisibleDropDown:=False .AutoFilter Field:=2, VisibleDropDown:=True .AutoFilter Field:=3, VisibleDropDown:=False End With End Sub ' |
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。