機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > Excel 2007レビュー

AutoFilterメソッドの絞り込み



日付のグループ化」でも書きましたが、Excel 2007ではオートフィルタに新機能がいくつか追加されています。そのひとつが"日付フィルタ"です。

クリックすると拡大します。拡大画像はクリックすると消えます

「今月」や「先週」などを選択するだけで、指定した日付による絞り込みが可能です。ワンタッチで絞り込めるので、ひんぱんに日付を扱うユーザーにとっては朗報でしょう。この"日付フィルタ"は、内部的に"フィルタオプションの設定"を実行しているのだろうと、マクロ記録で調べてみました。すると案の定、RangeオブジェクトのAutoFilterメソッドが記録されました。
AutoFilterメソッドの引数は次の通りです。

Range.AutoFilter(Field, Criteria1, Operator, Criteria2, VisibleDropDown)

Fieldは絞り込む列位置を指定します。条件はCriteria1とCriteria2に指定し、どんな絞り込みを行うかをOperatorに指定します。VisibleDropDownにFalseを指定するとドロップダウン矢印(▼)が非表示になります。
Operatorには次の定数を指定できます。

定数説明
 xlAnd1 抽出条件1と抽出条件2の論理演算子AND
 xlBottom10Items4 表示される最低値項目(抽出条件1で指定される項目数)
 xlBottom10Percent6 表示される最低値項目(抽出条件1で指定される割合)
 xlFilterCellColor8 セルの色
 xlFilterDynamic11 動的フィルタ
 xlFilterFontColor9 フォントの色
 xlFilterIcon10 フィルタアイコン
 xlFilterValues7 フィルタの値
 xlOr2 抽出条件1または抽出条件2の論理演算子OR
 xlTop10Items3 表示される最高値項目(抽出条件1で指定される項目数)
 xlTop10Percent5 表示される最高値項目(抽出条件1で指定される割合)

太字がExcel 2007で追加された新しい定数です。"日付フィルタ"はOperatorに定数xlFilterDynamicを指定します。たとえば「明日」で絞り込むときは次のようにします。

Sub Sample1()
    Range("A1:A7").AutoFilter Field:=1, _
                              Criteria1:=xlFilterTomorrow, _
                              Operator:=xlFilterDynamic
End Sub

Operatorに定数xlFilterDynamicを指定して"日付フィルタ"による絞り込みを行うときは、Criteria1に次の定数を指定できます。こちらはヘルプに記載されていません。

定数説明
 xlFilterToday1 今日
 xlFilterYesterday2 昨日
 xlFilterTomorrow3 明日
 xlFilterThisWeek4 今週
 xlFilterLastWeek5 先週
 xlFilterNextWeek6 来週
 xlFilterThisMonth7 今月
 xlFilterLastMonth8 先月
 xlFilterNextMonth9 来月
 xlFilterThisQuarter10 今四半期
 xlFilterLastQuarter11 前四半期
 xlFilterNextQuarter12 来四半期
 xlFilterThisYear13 今年
 xlFilterLastYear14 昨年
 xlFilterNextYear15 来年
 xlFilterYearToDate16 今年の初めから今日まで
 xlFilterAllDatesInPeriodQuarter117 期間内の全日付:第1四半期
 xlFilterAllDatesInPeriodQuarter218 期間内の全日付:第2四半期
 xlFilterAllDatesInPeriodQuarter319 期間内の全日付:第3四半期
 xlFilterAllDatesInPeriodQuarter420 期間内の全日付:第4四半期
 xlFilterAllDatesInPeriodJanuary21 期間内の全日付:1月
 xlFilterAllDatesInPeriodFebruray22 期間内の全日付:2月
 xlFilterAllDatesInPeriodMarch23 期間内の全日付:3月
 xlFilterAllDatesInPeriodApril24 期間内の全日付:4月
 xlFilterAllDatesInPeriodMay25 期間内の全日付:5月
 xlFilterAllDatesInPeriodJune26 期間内の全日付:6月
 xlFilterAllDatesInPeriodJuly27 期間内の全日付:7月
 xlFilterAllDatesInPeriodAugust28 期間内の全日付:8月
 xlFilterAllDatesInPeriodSeptember29 期間内の全日付:9月
 xlFilterAllDatesInPeriodOctober30 期間内の全日付:10月
 xlFilterAllDatesInPeriodNovember31 期間内の全日付:11月
 xlFilterAllDatesInPeriodDecember32 期間内の全日付:12月

新機能"日付フィルタ"に関する解説はここまでです。

ところで!上の定数一覧を見て、何か「えっ!?」と驚くことに気づきませんか?先に言っておきますが、私はタイプミスをしていません。
「期間内の全日付:2月」の定数をご覧ください。

xlFilterAllDatesInPeriodFebruary
ではなく
xlFilterAllDatesInPeriodFebruray
です。
マクロ記録すると「xlFilterAllDatesInPeriodFebruray」が記録されますし、そもそも「xlFilterAllDatesInPeriodFebruary」という定数は定義されていません。"2月"を表す英単語は確かFebruaryでしたよね(^^;

Googleで「Februray」を検索すると、けっこうヒットします。それだけ間違えやすい綴りということなのかもしれませんが、もしかすると「Februray」という綴りも認容されているのでしょうか。しかし、Excelでは次のように「February」しか表示されません。下図のセルC2は「mmmm」という表示形式で月名を表示しています。セルD2はTEXT関数でやってみました。ダイアログボックスは、マクロで「MsgBox Format("2007/2/1", "mmmm")」を実行した結果です。



また、ユーザー定義リストも「February」で登録されてます。

クリックすると拡大します。拡大画像はクリックすると消えます

いったい、どうしたんでしょうね(^^;



このエントリーをはてなブックマークに追加