日付から曜日を割り出すWEEKDAY関数

解説記事内の画像はExcel 2016のものですが、操作方法は下記のバージョンで同じです。
  • Excel 2016, 2013, 2010

日付から曜日を割り出すWEEKDAY関数01 図の表には、日付が入力されています。
これに、ただ曜日を表示させるだけなら、

日付から曜日を割り出すWEEKDAY関数04 ユーザー定義の表示形式を使って設定すればOK。
この例では、日付とともに、曜日を全角括弧で囲んで表示するように設定しています。

日付から曜日を割り出すWEEKDAY関数05 ユーザー定義の表示形式で、自分の思い通りの日付と曜日の表現ができました!

日付から曜日を割り出すWEEKDAY関数06 ところが、C2番地に「A2番地が水曜日だったら「休業日」と表示させる」といった、曜日によって何かしらの処理をしたい場合には、このままでは何もできないんです。
「A2番地が水曜日だったら「休業日」と表示させる」という処理にはIF関数を使います。
その際、「A2番地が水曜日だったら」の部分を数式で表現しようとしてもできないんです!

日付から曜日を割り出すWEEKDAY関数07 それは日付と曜日が表示されているA2番地を選択してみれば分かります。
選択したセルの中身は、数式バーに映し出されるわけですが、あくまでもこのセルに入力されているのは日付。
それを表示形式という「見かけ」の設定で曜日も表示させているだけなので、このセルに直接、「○曜日」という文字が入力されているわけではないからなんです。
「○曜日」という文字が入力されているわけではないので、当然「A2番地が水曜日だったら」の数式は成り立ちません。

そこで!
こういった、曜日によって何かしらの処理をしたい場合には、「見かけ」ではなく、きっちりデータとして曜日を扱えるようにしなければなりません。
その、データとして扱えるような曜日を、日付から割り出してくれるのが、今回ご紹介するWEEKDAY関数です!

WEEKDAY関数の基本

日付から曜日を割り出すWEEKDAY関数08 それでは、A2番地の日付をもとに、曜日を表すデータが表示されるようにしていきましょう。
今回、曜日を表すデータはB2番地に表示したいので、まずはB2番地を選択し、数式バーの[関数の挿入]ボタンをクリックします。

日付から曜日を割り出すWEEKDAY関数09 関数を指定するためのダイアログボックスが表示されるので、[関数の分類]で「すべて表示」を選択すると、すべての関数が[関数名]欄にABC順で表示されます。
今回はWEEKDAY関数を使いたいので、一覧から「WEEKDAY」をクリックで選択し、[OK]ボタンを押します。
ちなみに、この一覧から「WEEKDAY」を選択する際、「WEEKDAY」の頭文字である「W」のところまで、一瞬でスクロールする技を使うと便利です。

日付から曜日を割り出すWEEKDAY関数10 前のダイアログボックスで「WEEKDAY」を選択して[OK]ボタンをクリックすると、このようなダイアログボックスが表示されます。
[シリアル値]欄には、曜日を割り出すための日付が入力されているセルを指定します。
[シリアル値]欄に文字カーソルが入っていることを確認したら、

日付から曜日を割り出すWEEKDAY関数11 日付が入力されているA2番地をクリックで選択します。
[シリアル値]欄に、日付が入力されているセルを指定することができました。
続いて[種類]欄の指定に移りたいので、キーボードの[Tab]キーをポンッと押すと、

日付から曜日を割り出すWEEKDAY関数12 [種類]欄に文字カーソルが移ります。
この[種類]欄には、曜日の答え方を指定します。
実はこのWEEKDAY関数、答えを「○曜日」という曜日の名前ではなく、曜日を表す「数字」を答えとして表示します。
「数字なのかい!」と思いますがそこは我慢して、月・火・水・木・金・土・日と数えると、曜日は全部で7つあるので、この関数で答えとして表示される、曜日を表す「数字」も「1」〜「7」となります。

日付から曜日を割り出すWEEKDAY関数13 ただ、その答えとなる曜日を表す「数字」で、何曜日を答え「1」とするかを、私たち自身が決められるようになっています。
日曜日を起点の「1」とし、月曜日を「2」、火曜日を「3」・・・のように答えを表示させたい場合には、この[種類]欄に「1」と入力するか、または何も入力せずに省略します。
この時、[種類]を「1」とすると、答えのどの数字が何曜日を表すのかな?と思ったりしますが、[種類]欄に文字カーソルがあれば、ちゃんとダイアログボックスに表示されているので大丈夫です。
でも一応、答えのどの数字が何曜日を表すのかを表にまとめてみました。

 日曜月曜火曜水曜木曜金曜土曜
種類「1」または省略1234567

他にも[種類]の指定方法があるのですが、あとでご紹介するので、先に進みましょう。
ダイアログボックス右下の[OK]ボタンをクリックします。

日付から曜日を割り出すWEEKDAY関数14 B2番地に、A2番地の日付に対応する、曜日データ(数字だけど)を表示させることができました!
答えは「3」となっていますが、

この答え「3」は、「火曜」を示す数字であることが分かります。

 日曜月曜火曜水曜木曜金曜土曜
種類「1」または省略1234567

日付から曜日を割り出すWEEKDAY関数15 ここで、このWEEKDAY関数について振り返ってみることにしましょう。
WEEKDAY関数を入力したB2番地を選択した状態で数式バーを見ると、入力した数式の内容が確認できます。

日付から曜日を割り出すWEEKDAY関数25 先程ダイアログボックスで指定した[シリアル値]、[種類]は、数式のこの部分に該当します。
ちなみに「シリアル値」と聞くと、難しそうで具合悪くなりそうですが、「日付を表すデータ」と読み替えるといいと思います。
詳しく知りたい方は「Excelで日時を扱うために知っておきたいシリアル値(日付編)」をご覧ください。

日付から曜日を割り出すWEEKDAY関数16 というわけで、この数式をかみ砕くと、「A2の日付から、「1」の答え方で、曜日を割り出してね」ということになります。

日付から曜日を割り出すWEEKDAY関数17 さぁ、答えを表示させる欄の先頭のセルに、数式を入力し終わったので、残りのセルにも数式を入力していきましょう。
数式が入力されているB2番地を選択した状態でオートフィルすれば、

日付から曜日を割り出すWEEKDAY関数18 残りのセルにも簡単に数式を入力することができました!

スポンサーリンク

[種類]いろいろ

日付から曜日を割り出すWEEKDAY関数13 先程は、日曜日を起点の「1」とし、月曜日を「2」、火曜日を「3」・・・のように答えを表示させるため、[種類]欄に「1」と設定するか、または何も入力せずに省略しました。

 日曜月曜火曜水曜木曜金曜土曜
種類「1」または省略1234567

実はその他にも答えの表示の仕方があって、月曜日を起点の「1」とし、火曜日を「2」、水曜日を「3」・・・のように答えを表示させるには、[種類]欄に「2」と設定します。

 日曜月曜火曜水曜木曜金曜土曜
種類「2」7123456

また、種類「2」と同様、月曜日を起点にすることは変わらないけれど、その起点の数字を「0」としたい場合には、[種類]欄に「3」と設定とします。

 日曜月曜火曜水曜木曜金曜土曜
種類「3」6012345

それにしても、「なんでこんなに、答えの表示の仕方を変えられるようになってるんだ!」とイラっときそうですが、手帳なんかだと、週初めが日曜日のものと、月曜日のものがあると思います。
使う人によって、どちらが使いやすいか、意見が分かれるのと同じで、答えの「1」が「日曜」を示すようにするのか、「月曜」を示すようにするのかを好みで選べる、と考えるといいと思います。
そして、「何事もゼロスタートだろう」と考える方のために、月曜スタートが「1」ではなく「0」で表示される指定もある、と考えるといいと思います。

割り出した曜日を表す数字を、処理に使う

日付から曜日を割り出すWEEKDAY関数19 WEEKDAY関数で、データとして扱える曜日(数字だけど)を準備できたので、これを使えば様々な処理ができるようになります。
今回は例として、C2番地に「もしB2番地のデータが水曜を表すものだったら「休業日」、そうじゃなければ空欄を表示させる」という処理をしてみたいと思います。

日付から曜日を割り出すWEEKDAY関数25 今回、WEEKDAY関数を設定した際に、[種類]を「1」に設定していたので、

水曜を表す数字は「4」となります。

 日曜月曜火曜水曜木曜金曜土曜
種類「1」または省略1234567

日付から曜日を割り出すWEEKDAY関数20 ということは、「もしB2番地のデータが水曜を表すものだったら「休業日」、そうじゃなければ空欄を表示させる」の、「もしB2番地のデータが水曜を表すものだったら」の部分は、「もしB2番地のデータが4だったら」ということになるので、C2番地に入力する数式はこのようになります。

日付から曜日を割り出すWEEKDAY関数27 この数式を拡大するとこんな感じ。
IF関数を使った数式です。
そもそもこういった数式を組めるのも、予めWEEKDAY関数を使って、曜日をデータとして扱えるようにしたからこそ、というわけです。

日付から曜日を割り出すWEEKDAY関数28 それから、「数式を入れたC2番地に答えが何も表示されない!」と思って焦ったそこのあなた!
このセルには「水曜じゃなければ空欄」になるよう数式を設定してあるので、何も表示されなくてむしろ正解です。
そして、このC2番地に入力した数式をオートフィルすれば、

日付から曜日を割り出すWEEKDAY関数21 水曜に「休業日」と表示させた、表の完成です!

日付から曜日を割り出すWEEKDAY関数22 ちなみにこの表では、WEEKDAY関数をB列に入力し、そのB列のデータを使って、C列にIF関数を組むという2段階方式を使っていますが、ワンクッションのためのB列が邪魔だなぁと思う方は、

日付から曜日を割り出すWEEKDAY関数24 ワンクッションを置かずに、関数のネストを使って、1つのセルでIF関数とWEEKDAY関数の処理をするといいと思います。
(練習用データを操作しながらご覧頂いている方で興味のある方は、Sheet2に練習用の表があるので、チャレンジしてみてください。)


ここまでで、WEEKDAY関数の基本と、使い方の例をご覧いただきました。
でも結局のところ大切なのは、WEEKDAY関数が必要な理由。

入力した日付に対応する曜日を、表示させるだけなら表示形式を使えばいい。
だけど、曜日によって何かしらの処理をしたい場合には、表示形式という「見かけ」ではなく、きっちりデータとして曜日を扱えるようにしなければならない。
その、データとして扱えるような曜日を、日付から割り出してくれるのが、今回ご紹介したWEEKDAY関数です!

スポンサーリンク