「日付のグループ化」でも書きましたが、Excel 2007ではオートフィルタに新機能がいくつか追加されています。そのひとつが"日付フィルタ"です。
「今月」や「先週」などを選択するだけで、指定した日付による絞り込みが可能です。ワンタッチで絞り込めるので、ひんぱんに日付を扱うユーザーにとっては朗報でしょう。この"日付フィルタ"は、内部的に"フィルタオプションの設定"を実行しているのだろうと、マクロ記録で調べてみました。すると案の定、RangeオブジェクトのAutoFilterメソッドが記録されました。
AutoFilterメソッドの引数は次の通りです。
Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)
Fieldは絞り込む列位置を指定します。条件はCriteria1とCriteria2に指定し、どんな絞り込みを行うかをOperatorに指定します。VisibleDropDownにFalseを指定するとドロップダウン矢印(▼)が非表示になります。
Operatorには次の定数を指定できます。
定数 | 値 | 説明 |
---|---|---|
xlAnd | 1 | 抽出条件1と抽出条件2の論理演算子AND |
xlBottom10Items | 4 | 表示される最低値項目(抽出条件1で指定される項目数) |
xlBottom10Percent | 6 | 表示される最低値項目(抽出条件1で指定される割合) |
8 | セルの色 | |
11 | 動的フィルタ | |
9 | フォントの色 | |
10 | フィルタアイコン | |
7 | フィルタの値 | |
xlOr | 2 | 抽出条件1または抽出条件2の論理演算子OR |
xlTop10Items | 3 | 表示される最高値項目(抽出条件1で指定される項目数) |
xlTop10Percent | 5 | 表示される最高値項目(抽出条件1で指定される割合) |
太字がExcel 2007で追加された新しい定数です。"日付フィルタ"はOperatorに定数xlFilterDynamicを指定します。たとえば「明日」で絞り込むときは次のようにします。
Sub Sample1() Range("A1:A7").AutoFilter Field:=1, _ Criteria1:=xlFilterTomorrow, _ Operator:=xlFilterDynamic End Sub
Operatorに定数xlFilterDynamicを指定して"日付フィルタ"による絞り込みを行うときは、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 | 今年の初めから今日まで |
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月 |
新機能"日付フィルタ"に関する解説はここまでです。
ところで!上の定数一覧を見て、何か「えっ!?」と驚くことに気づきませんか?先に言っておきますが、私はタイプミスをしていません。
「期間内の全日付:2月」の定数をご覧ください。
xlFilterAllDatesInPeriodFebruaryではなく
xlFilterAllDatesInPeriodFebruray
です。
マクロ記録すると「xlFilterAllDatesInPeriodFebruray」が記録されますし、そもそも「xlFilterAllDatesInPeriodFebruary」という定数は定義されていません。"2月"を表す英単語は確かFebruaryでしたよね(^^;
Googleで「Februray」を検索すると、けっこうヒットします。それだけ間違えやすい綴りということなのかもしれませんが、もしかすると「Februray」という綴りも認容されているのでしょうか。しかし、Excelでは次のように「February」しか表示されません。下図のセルC2は「mmmm」という表示形式で月名を表示しています。セルD2はTEXT関数でやってみました。ダイアログボックスは、マクロで「MsgBox Format("2007/2/1", "mmmm")」を実行した結果です。
また、ユーザー定義リストも「February」で登録されてます。
いったい、どうしたんでしょうね(^^;