Access。クエリで曜日を表示したいけど、Excelと同じでIF+WEEKDAY関数でいいの?
<Access:WeekdayName関数>
Accessのクエリで、日付から曜日を算出させたい場合は、どうしたらいいのでしょうか?
Excelと同じ方法を使えば算出できるのでしょうか?
Excelで日付から曜日を算出する方法は様々ありますよね。
例えば、
セル参照と表示形式のユーザー定義でaaaとする方法。
WEEKDAY関数を使うと、曜日に該当する数値しか算出してくれないので、
IF+WEEKDAY関数の合わせ技で算出する方法がありますが、
このネストする方法は、1だったら、日曜日という判断分岐をするために、
6回繰り返すような非常に複雑なネストの数式となってしまうので、
大変ですね。
そこで、Accessでは、Weekday関数は使うのですが、
WeekdayName関数というのがあって、
この2つの関数の組み合わせで曜日を表示することができます。
このWeekdayName関数は、
日曜日から数えて何曜日というように算出してくれる関数で、
Excelにもあればいいのになぁ~と思ってしまう関数なんですよ。
なお、Weekday関数は、Excelと同じで曜日を数値として算出する関数です。
まずは、Weekday関数の動きから確認しておきましょう。
Weekday関数: Weekday([日付])
というフィールドを作成してみます。
では、データシートビューで確認してみましょう。
このように、曜日を数値として算出してくれました。
2016/2/15は、月曜日なので、日曜日を1としておりますので、
2を算出するわけですね。
ただ、これでは、何曜日なのかが、見てすぐにわかりませんよね。
そこで、WeekdayName関数を使っていきます。
演算フィールドですが、
曜日: WeekdayName(Weekday([日付]),True)
という数式を作っていきます。
先ほどの、Weekday関数にWeekdayName関数をかぶせた形ですね。
では、データシートビューで確認してみましょう。
このように、曜日を算出することができましたね。
Excelで算出するよりも簡単に算出できるのがいいところですね。
なお、月ではなくて、月曜日というように、
~曜日をつけて表示するには、Trueを削除すれば、
表示することが出来るようになります。
曜日表示: WeekdayName(Weekday([日付]))
として、再度データシートビューで確認してみましょう。
このように、WeekdayName+Weekday関数のネストで
曜日を簡単に算出することができますよ。
なお、抽出するときには、注意が必要です。
デザインビューに変えて確認しておきましょう。
抽出条件を使って、月曜日のデータを抽出したい場合、
Weekday関数の算出結果だと2なので、抽出条件に2と入力して、
データシートビューで確認しようとすると、
「抽出条件でデータ型が一致しません。」と表示されてしまします。
つまり、数値型ではなくて、文字型だということ。
すなわち、このWeekdayName関数を使ったら、
抽出条件は、”月”というように文字にしなければなりません。
データシートビューで確認しておきましょう。
Accessの関数もExcel同様に組合せによって、便利になりますね。