Excel。日付から曜日を求めるWEEKDAY関数だけでは曜日を表示できません
<WEEKDAY関数>
日付から曜日を求める関数があります。
それがWEEKDAY関数です。
このWEEKDAY関数は、日とか月とかというような文字ではなくて、日曜日を1、月曜日を2というような数値で表示する関数です。
WEEKDAY関数は、2つ目の引数の種類を変えることによって、何曜日から始めるのかを決めることができます。
そこで、数値で表示されても、曜日名がわからないと何が何だかということになってしまうので、色々な関数と組み合わせます。
B2の数式は
WEEKDAY関数をつかった場合です。
=WEEKDAY(A2,1)
結果は、数値として表示されています。
これでは、何曜日か一目ではわかりません。
C2の数式は、
IF関数とWEEKDAY関数を使った場合です。
=IF(WEEKDAY(A2,1)=1,"日",IF(WEEKDAY(A2,1)=2,"月",IF(WEEKDAY(A2,1)=3,"火",IF(WEEKDAY(A2,1)=4,"水",IF(WEEKDAY(A2,1)=5,"木",IF(WEEKDAY(A2,1)=6,"金","土"))))))
とんでもなく、長い数式になっています。
これでは、可読性が悪いですし、ミスも起こりやすくなります。
それならば、IFS関数をつかってみたらどうなるのでしょうか。
D2の数式は、IFS関数とWEEKDAY関数をつかっています。
=IFS(WEEKDAY(A2,1)=1,"日",WEEKDAY(A2,1)=2,"月",WEEKDAY(A2,1)=3,"火",WEEKDAY(A2,1)=4,"水",WEEKDAY(A2,1)=5,"木",WEEKDAY(A2,1)=6,"金",TRUE,"土")
IF関数よりかは、IFS関数はIFの中にIF関数をいれていないので、可読性は改善されていますが、WEEKDAY関数が曜日ごとにでてきますので、作成時にミスを起こす可能性は高いかと思われます。
WEEKDAY関数を何度もつかうというのが、可読性が悪化する要因ならば、LET関数をつかったらどうなるのか、確認してみましょう。
LET関数とWEEKDAY関数を組み合わせたのが、E2の数式です。
=LET(yb,WEEKDAY(A2,1),IF(yb=1,"日",IF(yb=2,"月",IF(yb=3,"火",IF(yb=4,"水",IF(yb=5,"木",IF(yb=6,"金","土")))))))
だいぶ、改善されましたが、LET関数自体の馴染みがないので、理解する必要がありそうです。
なお、LET関数は、数式内で変数を定義し、その変数を繰り返し利用できる関数です。
これにより、同じ計算や値を何度も書く必要がなくなり、数式の可読性や効率が大幅に向上します。
LET関数の引数は、=LET(変数1, 値1, 変数2, 値2, ..., 計算式) となっており、最初に変数とその値を定義し、最後にその変数を用いた計算式を記述する関数です。
それならば、WEEKDAY関数が何度も出てこない関数はないものでしょうか。
F2には、SWITCH関数をつかってみました。
=SWITCH(WEEKDAY(A2,1),1,"日",2,"月",3,"火",4,"水",5,"木",6,"金",7,"土")
IF関数やIFS関数をつかうよりも、可読性もいいですし、数式自体もシンプルですね。
さらに、シンプルになるのが、G2のCHOSE関数を使った場合です。
=CHOOSE(WEEKDAY(A2,1),"日","月","火","水","木","金","土")
CHOOSE関数は、SWITCH関数とことなり、1ならばという設定をしなくても、自動的に1ならばという設定になっています。
これまでは、WEEKDAY関数をつかうと、数値が算出されて、曜日がわからないので、他の関数と組み合わせていましたが、一番効率がいいのは、TEXT関数だと思います。
H2の数式は、
=TEXT(A2,"aaa")
たったこれだけです。
TEXT関数は、表示形式を反映する関数です。
”aaa”とするだけで、日付を曜日に変更することができます。
関数の組み合わせによって、結果は同じですが、可読性・修正しやすい数式のほうがいいように思えますね。

