「日付を入れると曜日が自動で表示される」「土日のセルだけ色が変わる」「週番号で売上を週次集計したい」——Excelで日付を扱う業務のほぼすべてに、WEEKDAY関数とWEEKNUM関数が関わっています。日付のシリアル値から曜日番号・週番号を返すこの2関数を組み合わせると、カレンダー自動生成・シフト表・週次集計など幅広い業務ツールを構築できます。
DATE・TODAY・NOW関数で日付を扱えるようになった次のステップが、曜日と週番号の取り扱いです。WEEKDAY関数はIF関数・TEXT関数・条件付き書式と組み合わせることで真価を発揮し、WEEKNUM関数はSUMIFS関数と連携して週次集計を自動化します。どちらもMOS Excel試験の「数式と関数」スキル項目に含まれています。
本記事では、WEEKDAY・WEEKNUM関数の基本構文・引数「種類」の完全一覧・TEXT関数との曜日名表示・実務シナリオ別の活用パターン(カレンダー自動生成・土日ハイライト・シフト判定・週次集計)・よくある落とし穴・MOS試験の出題ポイントを体系的に解説します。
WEEKDAY関数の基本構文
WEEKDAY関数は日付のシリアル値から曜日を表す数値を返します。
=WEEKDAY(シリアル値, [種類])
| 引数 | 説明 | 省略 |
|---|---|---|
| シリアル値 | 曜日を調べたい日付。セル参照(A1等)・DATE関数・TODAY()などを指定する | 必須 |
| 種類 | 戻り値の数値パターンを1~17の整数で指定する(省略または1で日曜=1、月曜=2…土曜=7) | 省略可 |
基本例:A1に「2026/6/18」(木曜日)が入っている場合。
=WEEKDAY(A1) ' 結果: 5(種類1の場合、日=1、月=2、火=3、水=4、木=5)
=WEEKDAY(A1, 2) ' 結果: 4(種類2の場合、月=1、火=2、水=3、木=4)
WEEKDAY関数が返すのは「曜日名」ではなく「曜日番号(整数)」です。曜日名を表示したい場合はTEXT関数を使います(後述)。曜日番号はIF関数や条件付き書式の条件式として使うのが主な用途です。
「種類」引数の完全一覧
第2引数「種類」によって戻り値(曜日番号の割り当て)が変わります。最もよく使うのは種類1(省略時)と種類2です。
| 種類 | 日 | 月 | 火 | 水 | 木 | 金 | 土 | 主な用途 |
|---|---|---|---|---|---|---|---|---|
| 1(省略時) | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 日曜始まりのカレンダー(米国式) |
| 2 | 7 | 1 | 2 | 3 | 4 | 5 | 6 | 月曜始まりのカレンダー(日本式) |
| 3 | 6 | 0 | 1 | 2 | 3 | 4 | 5 | 月曜=0の連続番号(曜日計算向け) |
| 11 | 7 | 1 | 2 | 3 | 4 | 5 | 6 | 種類2と同じ(Excel 2010以降追加) |
| 12 | 6 | 7 | 1 | 2 | 3 | 4 | 5 | 火曜始まり |
| 17 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 種類1と同じ(土曜始まり用に旧設計) |
実務での選択基準:日本の業務カレンダーでは種類2(月曜=1)が最も自然です。土日を判定する場合、種類2なら「土曜=6、日曜=7」と覚えやすく、WEEKDAY(A1,2)>=6という条件式で土日を一括判定できます。種類1を使うなら「土曜=7、日曜=1」なので条件式がWEEKDAY(A1)=1またはWEEKDAY(A1)=7と2条件になります。
TEXT関数と組み合わせた曜日名の表示
WEEKDAY関数は数値を返すだけです。「月」「火」「月曜日」「Mon」などの曜日名を表示したい場合は、TEXT関数の書式コードを使います。
| 数式 | A1=2026/6/18(木)のとき | 用途 |
|---|---|---|
| =TEXT(A1,”aaa”) | 木 | 1文字の曜日(カレンダー・シフト表見出し) |
| =TEXT(A1,”aaaa”) | 木曜日 | フルの曜日名(帳票・メール本文) |
| =TEXT(A1,”ddd”) | Thu | 英語省略形(国際レポート) |
| =TEXT(A1,”dddd”) | Thursday | 英語フル(多言語対応ドキュメント) |
TEXT関数はセルの表示形式を変えるのではなく文字列として出力します。そのため、TEXT(A1,”aaa”)の結果は数値計算に使えません。カレンダー列に曜日名を表示したいだけなら、セルの表示形式を「aaa」「aaaa」に設定してもほぼ同じ見た目になります(ただしセル値は日付のまま)。
WEEKDAY関数と組み合わせてIFで表示を制御する例:
=IF(WEEKDAY(A1,2)>=6, TEXT(A1,"aaa")&"(休)", TEXT(A1,"aaa"))
土日は「土(休)」「日(休)」、平日は「月」「火」のように表示できます。
WEEKNUM関数の基本構文
WEEKNUM関数は日付がその年の第何週目かを整数で返します。
=WEEKNUM(シリアル値, [週の基準])
| 引数 | 説明 | 省略 |
|---|---|---|
| シリアル値 | 週番号を調べたい日付 | 必須 |
| 週の基準 | 週の始まり曜日を指定する整数。省略または1で日曜始まり、2で月曜始まり | 省略可 |
基本例:A1=2026/6/18(2026年の第25週・月曜始まり)。
=WEEKNUM(A1) ' 結果: 25(日曜始まり基準)
=WEEKNUM(A1,2) ' 結果: 25(月曜始まり基準)
週番号は売上・作業実績を週単位で集計するSUMIFS・COUNTIFS・ピボットテーブルのキーとして活用できます。同じ週番号を持つ行を集計することで、日曜ではなく月曜を起点とした週次集計レポートが実現します。
実務シナリオ別の活用パターン
シナリオ1:カレンダー表で日付から曜日を自動生成
A列に日付(1日~末日)を入力し、B列に曜日を自動表示するカレンダー帳票を作る典型的な構成です。
' A2に日付(例: 2026/6/1)が入っている場合
B2: =TEXT(A2,"aaa") ' 曜日1文字(月・火・水…)
C2: =WEEKDAY(A2,2) ' 曜日番号(月=1、火=2…土=6、日=7)
DATE関数と組み合わせると、年・月をセルで切り替えるだけで日付が自動生成されるカレンダーを作れます。C1に年、C2に月を入力した場合:
A2: =DATE(C1,C2,1) ' 1日の日付
A3: =A2+1 ' 翌日(以降オートフィルで末日まで)
B2: =TEXT(A2,"aaa") ' 曜日自動表示
さらにEOMONTH(DATE(C1,C2,1),0)で月末日を算出し、IF文で日付が次の月に入ったらセルを空白にすると、月が替わっても自動調整されるカレンダーになります。
シナリオ2:条件付き書式で土日セルを自動ハイライト
条件付き書式でWEEKDAY関数を使うのは最もよく使われるパターンです。A列に日付が入っているカレンダー全体(例:A2:F32)を選択して条件付き書式を設定します。
' 土日行全体を色付けする場合(行全体を選択して適用)
' 「数式を使用して書式設定するセルを決定」に入力する数式:
=WEEKDAY($A2,2)>=6
$A2のように列を絶対参照・行を相対参照にすることで、各行の判定にA列の日付が使われます。WEEKDAY(x,2)が6(土曜)または7(日曜)のとき条件が真になり、指定した背景色・文字色が適用されます。
祝日を別シートのリストで管理してさらに色分けするには、COUNTIF関数を組み合わせます:
' 祝日リストが祝日シートのA列にある場合
=COUNTIF(祝日!$A:$A,$A2)>0
この2つの条件付き書式ルールを設定する順序に注意します。「祝日」のルールを「土日」のルールより優先順位を高く(上に)設定し、「条件が真の場合は停止する」チェックを外しておくと、祝日かつ土日の日付でも両方の書式が重ならず意図通りに表示されます。
シナリオ3:IF+WEEKDAYでシフト表の休日手当判定
シフト管理表で「土日・祝日勤務の場合は休日手当を加算する」ような判定に活用できます。
' A2: 勤務日、B2: 勤務時間数、C2: 時給
' D2に手当込み日給を計算する(土日は1.35倍)
D2: =B2*C2*IF(WEEKDAY(A2,2)>=6,1.35,1)
祝日もWEEKDAYと組み合わせたい場合はCOUNTIF関数で祝日リストを参照し、OR条件をIFSで表現します:
' WEEKDAY(A2,2)>=6(土日)またはCOUNTIF(祝日)>0なら休日手当
D2: =B2*C2*IF(OR(WEEKDAY(A2,2)>=6,COUNTIF(祝日!$A:$A,A2)>0),1.35,1)
CHOOSE関数とWEEKDAYを組み合わせると曜日ごとに異なる倍率を設定できます:
' 平日=1.0、土=1.25、日=1.35 の倍率を曜日番号で切り替え(種類2)
' 月火水木金=1.0、土=1.25、日=1.35
=B2*C2*CHOOSE(WEEKDAY(A2,2),1,1,1,1,1,1.25,1.35)
シナリオ4:WEEKNUMで週次集計レポートを自動化
売上データに週番号列を追加し、SUMIFS関数で週別集計する構成は業務レポート自動化の定番パターンです。
' データシート: A列=日付、B列=売上金額
' C列に週番号を自動付与(補助列として活用)
C2: =WEEKNUM(A2,2) ' 以降オートフィル
' 集計シート: E列に週番号(1,2,3…)、F列に週別売上合計
F2: =SUMIFS(データ!B:B,データ!C:C,E2)
さらにTEXT関数で週の開始日と終了日を表示すると、レポートの可読性が向上します:
' E2に週番号、G2に週の日付範囲を表示
' ※ 週番号から開始日を逆算する汎用式(2026年の場合)
G2: ="第"&E2&"週 ("&TEXT(DATE(2026,1,1)+(E2-1)*7-WEEKDAY(DATE(2026,1,1),3),"m/d")&"~"&TEXT(DATE(2026,1,1)+(E2-1)*7-WEEKDAY(DATE(2026,1,1),3)+6,"m/d")&")"
ピボットテーブルを使う場合は、補助列の週番号を「行ラベル」に設定すれば集計式なしで週別集計ビューが得られます。フィルターで週番号を絞り込むことで担当者別・商品別の週別詳細も一覧できます。
よくある落とし穴と対処法
| 問題 | 原因 | 対処法 |
|---|---|---|
| WEEKDAY関数が#VALUE!を返す | セルに日付のシリアル値ではなく、文字列として保存された日付が入っている | DATEVALUE関数でシリアル値に変換してからWEEKDAYに渡す |
| 土日の判定がずれる | 種類の指定が意図と異なる(種類1と2で土日の番号が違う) | 種類2を統一して使用し、土=6・日=7と一貫して覚える |
| 条件付き書式の参照がずれる | WEEKDAY($A2,2)の$を付けずに絶対参照を間違えた | 列($A)は絶対参照、行(2)は相対参照の複合参照を使う |
| WEEKNUMで年をまたぐとずれる | 12/31や1/1付近で前年・翌年の週番号が混在する | ISOWEEKNUM関数(ISO 8601準拠)を使うか、年+週番号の複合キーをSUMIFSのAND条件に加える |
| TEXT(“aaa”)が曜日名を返さない | セルが日付のシリアル値ではなく文字列として保存されている | DATEVALUE関数でシリアル値に変換してからTEXTに渡す |
文字列日付のデバッグ手順:① セルを選択して右クリック→セルの書式設定で表示形式が「日付」か確認 → ② =ISNUMBER(A1)がFALSEなら文字列 → ③ =DATEVALUE(A1)でシリアル値に変換 → ④ 変換後のセルにWEEKDAY/TEXT/WEEKNUM関数を適用する。大量データは「区切り位置」機能やPower Queryで一括変換が効率的です。
ISOWEEKNUMとWEEKNUMの使い分け
Excel 2013以降ではISO 8601規格に準拠したISOWEEKNUM関数が使えます。WEEKNUMとの主な違いは年末年始の週の扱いです。
| 関数 | 週の始まり | 第1週の定義 | 向いている用途 |
|---|---|---|---|
| WEEKNUM(x,2) | 月曜 | 1月1日を含む週が第1週 | 社内カレンダー・国内向け週次集計 |
| ISOWEEKNUM(x) | 月曜 | その年の最初の木曜日を含む週が第1週(ISO 8601) | 国際物流・製造業・グローバル対応レポート |
例えば2026年1月1日(木曜日)はWEEKNUM(x,2)では第1週ですが、前年の週番号ルールが引き継がれる日付もあります。国際規格との整合が不要な国内業務ならWEEKNUM(x,2)、グローバルチームと共有するレポートならISOWEEKNUM(x)を選びます。
MOS Excel試験でのWEEKDAY出題ポイント
MOS Excel 365&2019では、WEEKDAY関数は「数式と関数の使用」スキル項目と「条件付き書式」の組み合わせで出題されます。WEEKNUM関数はExpert(上級)レベルでの出題が中心です。
- 種類引数の意味:種類1(省略時)と種類2の違い・土日の番号の違いを正確に理解する。「日曜=1になるのはどの種類か」という問いが出題される
- 条件付き書式との組み合わせ:数式でWEEKDAY関数を使って土日の行・列を書式設定する操作手順が頻出。セル参照の絶対/相対の使い分けが正確にできることが必要
- IF関数との入れ子:IF(WEEKDAY(A1,2)>=6,”休日”,”平日”)のような入れ子数式を正確に入力する
- TEXT関数との組み合わせ:TEXT(A1,”aaa”)・TEXT(A1,”aaaa”)による曜日名表示。書式コードの正確な記憶と入力が求められる
- WEEKNUMの週の基準:省略時の動作(日曜始まり)と月曜始まり(基準2)の違いを区別できること
MOS試験 WEEKDAY・WEEKNUM チェックリスト
| 確認ポイント | 操作内容 | 難易度 |
|---|---|---|
| 基本構文の入力(種類2) | =WEEKDAY(A1,2)を正しく入力し、木曜=4が返ることを確認する | ★☆☆ |
| TEXT関数で曜日名表示 | =TEXT(A1,”aaa”)・=TEXT(A1,”aaaa”)を入力して曜日名が返ることを確認する | ★☆☆ |
| IF+WEEKDAYで土日判定 | 種類2で土=6・日=7を利用した>=6の条件式を入力できる | ★★☆ |
| 条件付き書式でWEEKDAY使用 | 「数式を使用して書式設定」でWEEKDAY($A2,2)>=6を入力し、複合参照を正しく設定する | ★★★ |
| WEEKNUMで週番号取得 | =WEEKNUM(A1,2)を入力して週番号が返ることを確認する | ★★☆ |
| SUMIFSとWEEKNUMの組み合わせ | 補助列にWEEKNUM値を付与してSUMIFSで週別集計する数式を作成できる | ★★★ |
まとめ:曜日・週番号を制してExcel自動化の幅を広げる
本記事のポイントをまとめます。
- WEEKDAY関数の役割:日付から曜日を数値で返す。返す値は「曜日名」ではなく「曜日番号」。TEXT関数・IF関数・条件付き書式と組み合わせて使う
- 種類引数は2を基本に:日本の実務では月曜=1とする種類2が自然。土=6・日=7で>=6という条件式で土日を一括判定できる
- TEXT(日付,”aaa”)で曜日名を表示:WEEKDAY関数と別の道具として使いわける。セルに直接「aaa」書式を設定するだけでも同様の表示が可能
- 条件付き書式との組み合わせが最大の活用場面:WEEKDAY($A2,2)>=6の複合参照を正確に使ってカレンダー・シフト表の土日を自動色付けする
- WEEKNUMは週次集計のキー:補助列に週番号を付与してSUMIFS・ピボットテーブルのグループキーとして活用する
- ISOWEEKNUMとの使い分け:国内業務はWEEKNUM(x,2)、グローバル対応はISOWEEKNUM(x)
- 文字列日付に注意:#VALUE!エラーの主因。DATEVALUEで変換してから使う
WEEKDAY・WEEKNUM関数を習得すると、カレンダー自動生成・シフト管理・週次集計レポートなど、毎月繰り返す定型業務を大幅に自動化できます。DATE・TODAY・EDATE・NETWORKDAYSといった日付関数群と組み合わせることで、年間カレンダーを1シートで完結させる本格的な業務ツールも実現します。MOS試験対策としては、条件付き書式内でのWEEKDAY活用と複合参照の設定を重点的に練習してください。
