11/28/2025

Excel。日付から曜日を求めるWEEKDAY関数だけでは曜日を表示できません【WEEKDAY】

Excel。日付から曜日を求めるWEEKDAY関数だけでは曜日を表示できません

<WEEKDAY関数>

日付から曜日を求める関数があります。


それがWEEKDAY関数です。


このWEEKDAY関数は、日とか月とかというような文字ではなくて、日曜日を1、月曜日を2というような数値で表示する関数です。


WEEKDAY関数は、2つ目の引数の種類を変えることによって、何曜日から始めるのかを決めることができます。


そこで、数値で表示されても、曜日名がわからないと何が何だかということになってしまうので、色々な関数と組み合わせます。

WEEKDAY関数
 

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”とするだけで、日付を曜日に変更することができます。


関数の組み合わせによって、結果は同じですが、可読性・修正しやすい数式のほうがいいように思えますね。