6/04/2018

Access。クエリで曜日を表示したいけど、Excelと同じでIF+WEEKDAY関数でいいの?【Access】

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同様に組合せによって、便利になりますね。