WEEKDAYは、日付が何曜日かを番号で返す関数です。
曜日を文字で表示したいだけなら TEXT のほうが簡単です。WEEKDAYが必要なのは、曜日で判定・分岐したいときです。
書式
=WEEKDAY(日付, [種類])
第2引数によって、何曜日を1とするかが変わります。
種類による番号の違い
| 種類 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
|---|---|---|---|---|---|---|---|
| 1(既定) | 日 | 月 | 火 | 水 | 木 | 金 | 土 |
| 2 | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
| 3 | 月=0 | 火=1 | 水=2 | 木=3 | 金=4 | 土=5 | 日=6 |
既定は「日曜が1」です。ここを勘違いすると判定が全部ずれます。
種類2は「月曜が1」で、日本の業務では扱いやすいことが多くなります。
基本の使い方
A1に 2026/4/1(水曜)が入っているとします。
=WEEKDAY(A1) → 4 (日曜が1なので、水曜は4)
=WEEKDAY(A1, 2) → 3 (月曜が1なので、水曜は3)
土日を判定する
既定(種類1)で書く
=OR(WEEKDAY(A1)=1, WEEKDAY(A1)=7)
日曜(1)か土曜(7)なら TRUE です。
種類2で書く(推奨)
=WEEKDAY(A1, 2) >= 6
月曜=1〜金曜=5、土曜=6、日曜=7 なので、6以上が土日になります。こちらのほうが短く、意図も明確です。
平日の判定はこうなります。
=WEEKDAY(A1, 2) <= 5
条件付き書式で土日に色を付ける
カレンダーや勤怠表で最もよく使う用途です。
「表示形式 → 条件付き書式 → カスタム数式」に次を入れます。
土曜を青く
=WEEKDAY($A2, 2) = 6
日曜を赤く
=WEEKDAY($A2, 2) = 7
列だけを $ で固定するのがポイントです。範囲を A2:F1000 にすれば行全体に色が付きます。
祝日も色分けする
祝日リストを別シートに用意して、COUNTIF で判定します。
=OR(WEEKDAY($A2,2)>=6, COUNTIF(祝日!$A:$A, $A2)>0)
祝日リストは自分で用意する必要があります。 内閣府が公開しているCSVを取り込むのが確実です。
曜日を文字で表示したいなら
WEEKDAYではなく TEXT を使ってください。
=TEXT(A1, "aaa") → 水
=TEXT(A1, "aaaa") → 水曜日
=TEXT(A1, "ddd") → Wed
WEEKDAYと SWITCH を組み合わせる方法もありますが、TEXT のほうが圧倒的に短く書けます。
=SWITCH(WEEKDAY(A1), 1,"日", 2,"月", 3,"火", 4,"水", 5,"木", 6,"金", 7,"土")
この書き方が必要になるのは、独自の表記(「日曜日」「Sun.」など)にしたいときだけです。
曜日別に集計する
作業列に曜日番号を出して、SUMIFS で集計します。
作業列B2: =ARRAYFORMULA(IF(A2:A="", "", WEEKDAY(A2:A, 2)))
集計: =SUMIFS(C:C, B:B, 1)
曜日名で集計したいなら TEXT を使います。
作業列B2: =ARRAYFORMULA(IF(A2:A="", "", TEXT(A2:A, "aaa")))
集計: =SUMIFS(C:C, B:B, "月")
QUERY を使うなら1行で書けます。
=QUERY({ARRAYFORMULA(TEXT(A2:A100,"aaa")), C2:C100}, "select Col1, sum(Col2) where Col1 <> '' group by Col1", 0)
営業日の計算
WEEKDAYで判定するより、専用の関数を使うほうが確実です。
| やりたいこと | 使う関数 |
|---|---|
| N営業日後を求める | WORKDAY(開始日, 日数, 祝日範囲) |
| 期間内の営業日数を数える | NETWORKDAYS(開始日, 終了日, 祝日範囲) |
=WORKDAY(TODAY(), 5, 祝日!A:A)
=NETWORKDAYS(A1, B1, 祝日!A:A)
土日を自動で除外し、祝日リストも渡せます。 WEEKDAYで自作するより確実です。
週休が土日でない場合は、WORKDAY.INTL / NETWORKDAYS.INTL で休みの曜日を指定できます。
よくある問題
判定が1日ずれる
第2引数を指定していない可能性が高いです。既定は日曜が1です。種類2(月曜が1)を明示してください。
#VALUE! が出る
対象が日付ではなく文字列になっています。セルが左寄せになっていないか確認し、DATEVALUE で変換してください。
条件付き書式が全行に適用される
参照が $A$2 になっています。$A2 にしてください。
空欄の行に色が付く
空欄は0として扱われ、WEEKDAY(0, 2) は7(日曜)を返します。空欄除外を条件に入れてください。
=AND($A2 <> "", WEEKDAY($A2, 2) >= 6)
Excelとの違い
WEEKDAY・WORKDAY・NETWORKDAYS ともに共通です。種類の番号も同じです。
Excelには種類11〜17(各曜日を1とする指定)もありますが、実務で使う1・2・3は共通です。
TEXT の "aaa"(日本語の曜日)も両方で使えます。
まとめ
- – 書式は
=WEEKDAY(日付, 種類) - – 既定は「日曜が1」。ここでずれる事故が最も多い
- – 土日判定は
=WEEKDAY(A1, 2) >= 6が最短 - – 曜日を文字で表示するだけなら TEXT を使う
- – 条件付き書式では
$A2(列だけ固定)+空欄除外 - – 営業日の計算は
WORKDAY/NETWORKDAYS
コメントを残す