Categories: VBA基礎

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メゾット(日付の絞り込み)を利用するには、下記の通りに設定を行います。

・オブジェクト.Autofilter(Field,Criteria1,Operator

Field・・・フィルタの対象となるフィールド番号を指定します。
Criteria1・・・データの抽出条件を指定します。(下記参照)
Operator・・・絞り込みの定数を指定します。

定数内容(説明)
xlFilterYesterday1昨日(前日)
xlFilterTomorrow2明日(翌日)
xlFilterToday3今日(当日)
xlFilterThisWeek4今週
xlFilterLastWeek5先週
xlFilterNextWeek6来週
xlFilterThisMonth7今月
xlFilterLastMonth8先月
xlFilterNextMonth9来月
xlFilterThisQuarter10今四半期(当四半期)
xlFilterLastQuarter11前四半期
xlFilterNextQuarter12来四半期
xlFilterThisYear13今年
xlFilterLastYear14昨年
xlFilterNextYear15来年
xlFilterYearToDate16今年の初めから今日まで
xlFilterAllDatesInPeriodQuarter117第一四半期
xlFilterAllDatesInPeriodQuarter218第二四半期
xlFilterAllDatesInPeriodQuarter319第三四半期
xlFilterAllDatesInPeriodQuarter420第四四半期
xlFilterAllDatesInPeriodJanuary211月
xlFilterAllDatesInPeriodFebruray222月
xlFilterAllDatesInPeriodMarch233月
xlFilterAllDatesInPeriodApril244月
xlFilterAllDatesInPeriodMay255月
xlFilterAllDatesInPeriodJune266月
xlFilterAllDatesInPeriodJuly277月
xlFilterAllDatesInPeriodAugust288月
xlFilterAllDatesInPeriodSeptember299月
xlFilterAllDatesInPeriodOctober3010月
xlFilterAllDatesInPeriodNovember3111月
xlFilterAllDatesInPeriodDecember3212月
xlFilterAboveAverage33平均を上回る値
xlFilterBelowAverage34平均未満の値

 

【使用例】
※ A列「設置日」のデータに対して、昨年「xlFilterLastYear」(2021年)の日付で絞り込みます。

'
'
Sub Autofilter00()

    Range("A1").AutoFilter Field:=1, Criteria1:=xlFilterLastYear, Operator:=xlFilterDynamic

End Sub
'

 

 

【注意点】
・上記の2月を意味する定数は、「xlFilterAllDatesInPeriodFebruray」ですが、2月の英単語は「February」です。スペルが間違えていますが、上記の「xlFilterAllDatesInPeriodFebruray」の定数で登録しても問題ありません。(EXCEL側で間違えて登録されています)

 

 

 

EXCEL VBA オートフィルタでデータの抽出・日付で絞り込む・特定の日付で絞り込む (AutoFilter)

 

 

●書式の説明② Autofilterメゾット

● Autofilterメゾット(日付の絞り込み)を利用するには、下記の通りに設定を行います。

・オブジェクト.Autofilter(Field,Criteria1

Field・・・フィルタの対象となるフィールド番号を指定します。
Criteria1・・・データの抽出条件を指定します。


【使用例】

※ A列「設置日」のデータに対して、日付指定(2022/10/15)で絞り込みます。

'
'
Sub Autofilter01()

    Range("A1").AutoFilter Field:=1, Criteria1:="2022/10/15"

End Sub
'

 

 

 

 

 

EXCEL VBA オートフィルタでデータの抽出・日付で絞り込む・特定の日付で絞り込む (AutoFilter)

 

 

●書式の説明② Autofilterメゾット

● Autofilterメゾット(日付の絞り込み)を利用するには、下記の通りに設定を行います。

・オブジェクト.Autofilter(Field,Operator,Criteria2

Field・・・フィルタの対象となるフィールド番号を指定します。
Operator・・・絞り込みの定数を指定します。:xlFilterValues・・・【フィルターの値を指定します。】
Criteria2・・・データの抽出条件を指定します。

 

数値(設定値)説明(内容)
後ろに設定した日付の年
後ろに設定した日付の月
後ろに設定した日付の日
3後ろに設定した日付の時
4後ろに設定した日付の分
5後ろに設定した日付の秒

 

 

【サンプルプログラム】:A列の日付から2022年10月と2022年12月のデータ抽出します。
【データ抽出説明】:Arrayを使い複数の月を指定します。設定1:で月を対象として抽出しています。(上記表を参照)

'
'
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:で年を対象として抽出しています。(上記表を参照)

'
'
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:で月を対象として抽出しています。(上記表を参照)

'
'
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メゾット/ドロップダウンの矢印(表示・非表示)の設定方法は、下記の通りに設定を行います。

・オブジェクト.Autofilter(Field,VisibleDropDown

Field・・・フィルターの対象となるフィールド番号を指定します。
VisibleDropDown・・・フィルターのドロップダウン矢印を表示・非表示に切り替える事ができます。
Trueは、矢印を表示する。(既定値)
Falseは、矢印を非表示にする。

【サンプルプログラム】:A列とB列のフィルターのドロップダウン矢印を非表示に切り替えます。(一括切替)

'
'
Sub Autofilter05() 'ドロップダウン矢印を表示・非表示 (一括指定)

    Range("A1").AutoFilter Field:=Array(1, 2), VisibleDropDown:=False

End Sub
'

 

【サンプルプログラム】:A列とC列のフィルターのドロップダウン矢印を非表示に切り替えます。(選択切替)

'
'
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に関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。

 

AKIRA