2/22/2020

Excel VBA。Excel VBAで日付を抽出する方法を改めて確認してみよう。【filter】

Excel VBA。Excel VBAで日付を抽出する方法を改めて確認してみよう

<Excel VBA>

日頃同じような処理をする場合、面倒なのでマクロにすることが多くあります。今回ご紹介する日付を抽出するというケースは、昔からよく作られるマクロなのですが、Excel 2003で作った場合にはExcel 2007以降では、すんなり稼働しないので、修正する必要があります。

では、早速Excel VBAで日付を抽出するマクロを作成していきましょう。
次のような表を用意しました。

【基本形から確認しましょう。】
営業日が2020/2/15のみを抽出するための構文をつくってみましょう。

Sub 日付抽出()
    Range("a1").AutoFilter field:=1, Criteria1:="2020/2/15"
End Sub

たったこれだけですが、実行してみましょう。

このように抽出することができました。
構文を説明すると、
Range("a1").AutoFilterは、A1を起点として、オートフィルターを設定します。

field:=1, Criteria1:="2020/2/15"
こちらは、
field:=1は、1列目でフィルターをかけます。

そして、
Criteria1:= "2020/2/15"
Criteriaは、条件のことですね。

意外と簡単なのですが、注意する必要があります。
それが、『表示形式』です。

たとえば、営業日の表示形式を年月日に変更して、マクロを実行してみましょう。

すると、抽出してくれないことがわかります。

ようするに、日付の抽出では、シリアル値を考えるのではなく、表示形式を考えないといけませんので、注意が必要です。
固定日の抽出というケースは少ないと思いますので、次は、今年のデータを抽出するようにアレンジしてきます。
データを一部変更しました。

Exce VBAの構文を次のようにアレンジしました。
Sub 日付抽出()
    Range("a1").AutoFilter field:=1, Operator:=xlFilterDynamic, Criteria1:=xlFilterThisYear
End Sub
実行してみましょう。

このように、2020年だけが抽出されましたね。
構文を確認しておきましょう。
Operator:=xlFilterDynamic
OperatorにxlFilterDynamicという定数を設定することで、様々な抽出を設定することができます。今年という条件で抽出したいので、
Criteria1:=xlFilterThisYear
と設定すればいいということになります。

このxlFilterDynamicは、Excelの日付フィルターのところを行っています。

この中の、今年が、「xlFilterThisYear」というわけです。
なので、
日にち
今日 xlFilterToday
昨日 xlFilterYesterday
明日 xlFilterTomorrow


今週 xlFilterThisWeek
先週 xlFilterLastWeek
来週 xlFilterNextWeek


今月 xlFilterThisMonth
先月 xlFilterLastMonth
来月 xlFilterNextMonth
1月 xlFilterAllDatesInPeriodJanuary
2月 xlFilterAllDatesInPeriodFebruray
3月 xlFilterAllDatesInPeriodMarch
4月 xlFilterAllDatesInPeriodApril
5月 xlFilterAllDatesInPeriodMay
6月 xlFilterAllDatesInPeriodJune
7月 xlFilterAllDatesInPeriodJuly
8月 xlFilterAllDatesInPeriodAugust
9月 xlFilterAllDatesInPeriodSeptember
10月 xlFilterAllDatesInPeriodOctober
11月 xlFilterAllDatesInPeriodNovember
12月 xlFilterAllDatesInPeriodDecember

四半期
今四半期 xlFilterThisQuarter
前四半期 xlFilterLastQuarter
来四半期 xlFilterNextQuarter
第1四半期 xlFilterAllDatesInPeriodQuarter1
第2四半期 xlFilterAllDatesInPeriodQuarter2
第3四半期 xlFilterAllDatesInPeriodQuarter3
第4四半期 xlFilterAllDatesInPeriodQuarter4


今年 xlFilterThisYear
昨年 xlFilterLastYear
来年 xlFilterNextYear

期間
今年の初めから今日まで xlFilterYearToDate

という定数を設定することで、日付を抽出することができます。
ちなみに、2月なのですが…
期間内の全日付:2月xlFilterAllDatesInPeriodFebruray
2月の単語は、「February」のはずですが、なぜか、「Februray」と間違っていますが、間違っているのが正しいので、入力する時に注意する必要があります。