<< 日付のグループ化 | main | やっと見つけた!Excelの終了ボタン >>

AutoFilterメソッドの絞り込み

0
    日付のグループ化」でも書きましたが、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」で登録されてます。



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

    コメント
    コメントする









    この記事のトラックバックURL
    トラックバック
    Topページへ戻る
    calendar
         12
    3456789
    10111213141516
    17181920212223
    24252627282930
    << June 2018 >>
    selected entries
    categories
    archives
    recent comment
    recent trackback
    recommend
    recommend
    recommend
    recommend
    recommend
    links
    profile
    search this site.
    others
    mobile
    qrcode