「日付から曜日を自動で出したい」「スケジュール表で土日だけ色を変えたい」――こんな場面、仕事でよくありますよね。
日付を見ながら手作業で「月・火・水…」と入力するのは手間ですし、ミスのもとです。ExcelのWEEKDAY関数を使えば、日付から曜日の番号を一発で取り出せます。
この記事では、WEEKDAY関数の基本構文と種類引数の使い分けを最初に整理します。あわせて、TEXT・CHOOSE・SWITCH関数との組み合わせ、土日色分け、平日合計のテンプレートまで実務で使える形で紹介します。
この記事は次のような人におすすめ
– 日付から曜日を自動表示したい
– スケジュール表で土日を色分けしたい
– WEEKDAY関数の種類引数の違いをはっきり理解したい
– 平日だけの売上を一発で集計したい
ExcelのWEEKDAY関数とは?(日付から曜日番号を返す関数)
WEEKDAY関数(読み方:ウィークデイ)は、指定した日付が何曜日かを整数で返す関数です。関数名は英語の weekday(平日・曜日)に由来します。
たとえば、2026年3月20日(金曜日)をWEEKDAY関数に渡すと 6 が返ります。これは「日曜=1」始まりの番号体系で、金曜が6番目だからです。
返ってくるのは曜日の「番号」であって、「月曜日」のような文字列ではありません。曜日名を表示したい場合は、TEXT関数やSWITCH関数と組み合わせます。
対応バージョンはExcel 2003以降すべてです。Microsoft 365、Excel for Mac、Excel for the Webでも使えますよ。
WEEKDAY関数の書き方(構文と引数)
基本構文
=WEEKDAY(シリアル値, [種類])
引数の説明
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| シリアル値 | 必須 | 曜日を調べたい日付。セル参照や日付文字列を指定 |
| 種類 | 省略可 | 曜日番号の割り当て方を指定する数値(省略時は1) |
シリアル値には、日付が入ったセル(A2など)を指定するのが一般的です。"2026/3/20" のように日付文字列を直接書くこともできます。DATE関数で日付を組み立てて渡すことも可能です。
種類(第2引数)の一覧表
種類引数によって「何曜日を1にするか」が変わります。実務でよく使うのは 1(日曜始まり) と 2(月曜始まり) の2つです。
| 種類 | 戻り値の範囲 | 週の始まり | 補足 |
|---|---|---|---|
| 1(省略時) | 1(日)〜 7(土) | 日曜始まり | 米国式・既定値 |
| 2 | 1(月)〜 7(日) | 月曜始まり | 日本のビジネス向き |
| 3 | 0(月)〜 6(日) | 月曜始まり(0始まり) | プログラミング寄り |
| 11 | 1(月)〜 7(日) | 月曜始まり | 種類2と同じ結果 |
| 12 | 1(火)〜 7(月) | 火曜始まり | Excel 2010で追加 |
| 13 | 1(水)〜 7(火) | 水曜始まり | Excel 2010で追加 |
| 14 | 1(木)〜 7(水) | 木曜始まり | Excel 2010で追加 |
| 15 | 1(金)〜 7(木) | 金曜始まり | Excel 2010で追加 |
| 16 | 1(土)〜 7(金) | 土曜始まり | Excel 2010で追加 |
| 17 | 1(日)〜 7(土) | 日曜始まり | 種類1と同じ結果 |
種類2と種類11は同じ結果
どちらも「月曜=1〜日曜=7」を返します。種類11はExcel 2010で追加された新しい書き方です。どちらを使っても問題ありません。
実務での選び方
日本のビジネスでは種類2(月曜始まり)が使いやすいです。カレンダーや勤怠表は月曜始まりが多いですよね。「土日判定」だけなら種類1(省略)でも十分です。
WEEKDAY関数の基本的な使い方
日曜始まり(種類1 / 省略時)で曜日番号を取得する
セルA2に 2026/3/20(金曜日)が入っているとします。
=WEEKDAY(A2)
結果は 6 です。日曜=1で数えると金曜は6番目になります。
月曜始まり(種類2)で曜日番号を取得する
月曜始まりにしたい場合は、第2引数に 2 を指定します。
=WEEKDAY(A2, 2)
結果は 5 です。月曜=1で数えると金曜は5番目になります。
日付文字列を直接指定する
セル参照を使わず、日付を直接書くこともできます。
=WEEKDAY("2026/3/20")
結果は 6 です。ただし実務ではセル参照のほうが使い回しがきくので、セル参照をおすすめしますよ。
今日の曜日番号を取得する
TODAY関数やNOW関数と組み合わせれば、当日の曜日番号を取得できます。
=WEEKDAY(TODAY(), 2)
時刻付きの日付でも、WEEKDAY関数は時刻部分を無視するので、NOW()を渡しても正しく動作します。
WEEKDAY関数の実務活用パターン
パターン1: TEXT関数で曜日名を表示する
WEEKDAY関数は番号を返すだけなので、「月曜日」のような文字列にはなりません。曜日名を表示したいときはTEXT関数を使うのが最もシンプルです。
=TEXT(A2, "aaa")
"aaa" を指定すると「金」のように短縮表記になります。"aaaa" なら「金曜日」とフル表記です。
| 書式コード | 表示例 | 用途 |
|---|---|---|
"aaa" | 金 | 短縮表示(日本語専用) |
"aaaa" | 金曜日 | フル表示(日本語専用) |
"ddd" | Fri | 短縮表示(英語) |
"dddd" | Friday | フル表示(英語) |
aaaとdddの違い
日本語環境では
"aaa"と"ddd"はどちらも「金」を返す場合があります。ただし"aaa"は日本語専用のコードです。英語表記が必要なら"ddd"を使ってください。表示言語はExcelのシステムロケールによって変わります。
パターン2: CHOOSE関数で曜日名を自由にカスタマイズする
「月」「火」ではなく「Mon」「Tue」のように表示したい場合は、CHOOSE関数が便利です。
=CHOOSE(WEEKDAY(A2), "日","月","火","水","木","金","土")
WEEKDAY関数が返す番号(1〜7)に対応する文字列をCHOOSE関数で選択します。好きな表記に変えられるのがメリットです。
英語表記にしたい場合は次のようにします。
=CHOOSE(WEEKDAY(A2), "Sun","Mon","Tue","Wed","Thu","Fri","Sat")
第1引数のWEEKDAY関数が「種類1(日曜始まり)」なので、CHOOSE関数の選択肢も日曜から並べる点に注意してください。
パターン3: SWITCH関数で曜日名を表示する(Excel 2019以降)
SWITCH関数を使えば、値と結果のペアを並べて書けます。
=SWITCH(WEEKDAY(A2,2), 1,"月", 2,"火", 3,"水", 4,"木", 5,"金", 6,"土", 7,"日")
CHOOSE関数との違いは、番号の順番に縛られない点です。種類2(月曜始まり)の番号にも対応しやすくなります。
SWITCH関数の対応バージョン
SWITCH関数はExcel 2019以降またはMicrosoft 365で使用できます。お使いのバージョンが対応しているか、確認しておきましょう。
パターン4: 条件付き書式で土日を色分けする
スケジュール表で土日の行だけ背景色を変えたい場合は、条件付き書式とWEEKDAY関数を組み合わせます。
設定手順:
- 色を付けたいセル範囲を選択する
- 「ホーム」タブ →「条件付き書式」→「新しいルール」を選択
- 「数式を使用して、書式設定するセルを決定」を選択
- 以下の数式を入力する
- 「書式」ボタンから背景色を指定して完了
土曜日を青くする数式:
=WEEKDAY($A2)=7
日曜日を赤くする数式:
=WEEKDAY($A2)=1
ポイントは列を $A で固定し、行は固定しないことです。これで各行の日付に応じて色が変わりますよ。
土日をまとめて判定するテクニック
=OR(WEEKDAY($A2)=1, WEEKDAY($A2)=7)と書けば、1つのルールで土曜と日曜の両方に同じ書式を適用できます。
絶対参照を忘れると色がずれる
=WEEKDAY(A2)=1のように$を付け忘れると、Excelが自動で参照をずらしてしまい、思った行に色が付きません。列だけ固定 が鉄則です。
パターン5: 平日だけ集計する(SUMPRODUCT連携)
売上データから平日分だけを合計したい場合は、SUMPRODUCT関数と組み合わせます。
=SUMPRODUCT((WEEKDAY(A2:A31,2)<=5)*(B2:B31))
WEEKDAY(日付, 2)<=5 で月曜〜金曜が TRUE になります。これを売上列と掛け合わせて、平日分だけ合計できます。
土日だけの売上を合計したいときは、不等号を反転して >=6 にします。
=SUMPRODUCT((WEEKDAY(A2:A31,2)>=6)*(B2:B31))
祝日も除外したい場合は、NETWORKDAYS関数のほうが簡単です。祝日リストを引数に渡せるので、手動で除外する手間が省けますよ。
パターン6: IF関数で「土日休み」フラグを付ける
シフト表や勤怠表で「土日は休み」と自動表示したい場合は、IF関数とOR関数を組み合わせます。
=IF(OR(WEEKDAY(A2)=1, WEEKDAY(A2)=7), "休", "")
A2の日付が土日なら「休」、平日なら空欄になります。""の部分を "出勤" に変えれば、平日に文字を表示することもできます。
パターン7: Microsoft 365の動的配列でまとめて変換する
Microsoft 365 または Excel 2021以降では、WEEKDAY関数にセル範囲を渡すと、結果が配列でスピルします。
=WEEKDAY(A2:A31, 2)
A2からA31までの曜日番号が、1つの数式で一気に出力されます。1行ずつ数式をコピーする手間が省けて便利ですよ。
Excel 2019以前では Ctrl+Shift+Enter で配列数式として確定する必要があります。
よくあるエラーと対処法
| エラー | 原因 | 対処法 |
|---|---|---|
#VALUE! | シリアル値に日付以外の文字列を指定した | 日付が正しい形式か確認する |
#NUM! | 種類引数に無効な値(4〜10、18以上など)を指定した | 1, 2, 3, 11〜17 のいずれかを使う |
#NUM! | シリアル値が負の数 | 1900/1/1以降の日付を指定する |
| 期待と違う番号 | 種類引数の指定ミス | 上記の種類一覧表で番号体系を確認する |
文字列の日付に注意
セルに「3月20日」と入力しても、表示形式が文字列になっていると日付として認識されません。
#VALUE!エラーが出たら、セルの書式が「日付」になっているか確認してみてください。文字列の場合はDATEVALUE関数でシリアル値に変換できます。
よくある質問(FAQ)
Q1. WEEKDAY関数で「月曜日」のように文字で表示できる?
A. WEEKDAY関数自体は数字を返すだけです。「月曜日」のように文字で表示したい場合は、TEXT関数 =TEXT(A2,"aaaa") を使うのが最も簡単です。CHOOSE関数やSWITCH関数を組み合わせる方法もあります。
Q2. 種類2と種類11はどちらを使うべき?
A. どちらを使っても結果は同じです。種類11はExcel 2010で追加された新しい記法で、種類2は古くから使われています。実務では昔から馴染みのある 種類2 を使うケースが多いですよ。
Q3. 土日に行全体の色を付けたい
A. 条件付き書式で行全体(例: A2:E2)を選択し、数式を =WEEKDAY($A2)=7 のように列だけ $ で固定します。これで日付列を基準に行全体が色付けされます。
Q4. 祝日も自動で色分けしたい
A. WEEKDAY関数だけでは祝日を判定できません。別シートに祝日リストを作成し、COUNTIF関数で「祝日リストに含まれるかどうか」を判定して条件付き書式に組み込みます。例: =COUNTIF(祝日リスト!$A:$A, $A2)>0
Q5. WEEKDAY関数とWORKDAY関数の違いは?
A. 名前は似ていますが機能はまったく別です。WEEKDAY は「日付 → 曜日番号」を返す関数、WORKDAY は「開始日 + 日数 → N日後の営業日」を返す関数です。曜日を知りたいときはWEEKDAY、納期や支払期日を計算したいときはWORKDAYと覚えておきましょう。
Q6. セルの表示形式で曜日を出すのとWEEKDAY関数は何が違う?
A. 表示形式(aaa などのユーザー定義書式)は「見た目だけ」を変えるため、IF関数や条件付き書式の判定には使えません。WEEKDAY関数やTEXT関数なら、結果を他の数式で参照できるのが大きな違いです。
似た関数との違い・使い分け
| 関数名 | 機能 | 使い分けのポイント |
|---|---|---|
| WEEKDAY | 日付 → 曜日番号 | 曜日の判定・条件分岐に使う |
| TEXT | 日付 → 曜日名(文字列) | 「月曜日」と直接表示したいとき |
| WORKDAY | 営業日後の日付を計算 | 納期計算・支払期日の算出に使う |
| NETWORKDAYS | 2つの日付間の営業日数 | 稼働日数のカウントに使う |
| YEAR / MONTH / DAY | 日付 → 年/月/日 | 日付の各パーツを取り出すとき |
WEEKDAY関数とWORKDAY関数の混同に注意してください。名前が似ていますが機能はまったく別です。WEEKDAYは「曜日の番号を返す」関数、WORKDAYは「営業日後の日付を返す」関数です。
まとめ
ExcelのWEEKDAY関数は日付から曜日番号を取り出す関数です。この記事で紹介したポイントをおさらいしましょう。
- 基本構文:
=WEEKDAY(シリアル値, [種類]) - 種類引数: 1(日曜始まり)と2(月曜始まり)をまず覚えればOK
- 曜日名の表示: TEXT関数
=TEXT(A2,"aaa")が最もシンプル - 自由な表記: CHOOSE関数やSWITCH関数で好きな文字列に変換
- 土日の色分け: 条件付き書式で
=WEEKDAY($A2)=1のように設定(列だけ固定) - 平日の集計:
=SUMPRODUCT((WEEKDAY(A2:A31,2)<=5)*(B2:B31))で一発
「番号を返すだけ」のシンプルな関数ですが、他の関数や条件付き書式と組み合わせると活用の幅が大きく広がります。ぜひ日常の業務で試してみてください。
この記事で紹介した関数
- TEXT関数の使い方
- SWITCH関数の使い方
- CHOOSE関数の使い方
- DATE関数の使い方
- WORKDAY関数の使い方
- NETWORKDAYS関数の使い方
- SUMPRODUCT関数の使い方
- DATEVALUE関数の使い方
