WEEKDAY関数の使い方|曜日を判定して土日に色を付ける

執筆者:

カテゴリ:

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

関連する関数

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です