Excel VBA Dynamic Date & Value Filters — 定数一覧と使用例を完全網羅

目次

概要

Excel の AutoFilter には、日付・数値を相対条件で抽出できる “Dynamic Filter” が多数用意されています。本稿では 一切省略せずに すべての動的フィルター定数を掲載し、それぞれの概要と代表的なコード例を丁寧に解説いたします。


動的フィルター定数一覧(日付関連)

区分定数名抽出対象
当日基準xlFilterToday本日
xlFilterYesterday昨日
xlFilterTomorrow明日
週単位xlFilterThisWeek今週
xlFilterLastWeek先週
xlFilterNextWeek来週
月単位xlFilterThisMonth今月
xlFilterLastMonth先月
xlFilterNextMonth来月
四半期xlFilterThisQuarter今四半期
xlFilterLastQuarter前四半期
xlFilterNextQuarter次四半期
年単位xlFilterThisYear今年
xlFilterLastYear昨年
xlFilterNextYear来年
期間xlFilterYearToDate年初来(1 月 1 日〜今日)

四半期ごとの月指定

定数名対応四半期
xlFilterAllDatesInPeriodQuarter1第1四半期 (1–3 月)
xlFilterAllDatesInPeriodQuarter2第2四半期 (4–6 月)
xlFilterAllDatesInPeriodQuarter3第3四半期 (7–9 月)
xlFilterAllDatesInPeriodQuarter4第4四半期 (10–12 月)

月ごとの指定(1 月〜12 月)

定数名定数名
1xlFilterAllDatesInPeriodJanuary7xlFilterAllDatesInPeriodJuly
2xlFilterAllDatesInPeriodFebruary8xlFilterAllDatesInPeriodAugust
3xlFilterAllDatesInPeriodMarch9xlFilterAllDatesInPeriodSeptember
4xlFilterAllDatesInPeriodApril10xlFilterAllDatesInPeriodOctober
5xlFilterAllDatesInPeriodMay11xlFilterAllDatesInPeriodNovember
6xlFilterAllDatesInPeriodJune12xlFilterAllDatesInPeriodDecember

動的フィルター定数一覧(数値関連)

定数名抽出対象
xlFilterAboveAverage列平均より上
xlFilterBelowAverage列平均より下

使用例:今週のデータを抽出

Sub ExtractThisWeek()
    Dim rng As Range
    Set rng = Worksheets("Data").Range("A1").CurrentRegion
    rng.AutoFilter Field:=1, _
                   Operator:=xlFilterDynamic, _
                   Criteria1:=xlFilterThisWeek
End Sub

使用例:第1四半期(1–3 月)のデータを抽出

Sub ExtractQuarter1()
    Dim tbl As Range
    Set tbl = Worksheets("Data").Range("A1").CurrentRegion
    tbl.AutoFilter Field:=1, _
                   Operator:=xlFilterDynamic, _
                   Criteria1:=xlFilterAllDatesInPeriodQuarter1
End Sub

使用例:平均以上の数値を抽出

Sub ExtractAboveAverage()
    Dim src As Range
    Set src = Worksheets("Data").Range("B1").CurrentRegion
    src.AutoFilter Field:=3, _
                   Operator:=xlFilterDynamic, _
                   Criteria1:=xlFilterAboveAverage
End Sub

よくある質問

質問回答
日付列が文字列の場合は動作しますか。文字列の日付は正しく判定されません。事前に DateValue などでシリアル値へ変換してください。
複数の動的条件を組み合わせられますか。別列に対して追加で AutoFilter を設定すると AND 条件を構築できます。
テーブル(ListObject)でも利用可能ですか。ListObject.Range を対象範囲に指定すれば同じ定数が利用できます。

まとめ

Dynamic フィルター定数を活用すると、「今週」「今四半期」「平均以上」などの抽出をマクロ一行で自動化できます。本稿で示した すべての定数 を用途に応じて置き換えるだけで、多彩な期間・数値条件に対応可能です。ぜひレポート自動化やデータ分析の効率向上にお役立てください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次