勤怠表や会議室予約表、納品スケジュールなど、日付が並ぶ一覧表では「土日の行だけ薄い色をつけて見やすくする」という体裁がよく求められます。これを毎月・毎週手作業で塗り分けていると、日付を差し替えたときに塗り忘れる、コピペで色がずれるといったミスが起こりがちです。WEEKDAY関数を条件付き書式と組み合わせると、日付セルの中身に応じて自動的に色分けされる仕組みを1回作るだけで、以降はメンテナンス不要になります。この記事では、その組み合わせ方と、実務で特につまずきやすいポイントを解説します。

WEEKDAY関数の基本構文

WEEKDAY関数は、日付から曜日を表す数値を取り出す関数です。第2引数の「種類」によって、どの曜日を1番として数えるかが変わります。

=WEEKDAY(シリアル値, [種類])

例:2026/4/1(水曜日)の場合
=WEEKDAY(A2) または =WEEKDAY(A2,1) → 4(日曜日=1,月曜日=2…で数えるため水曜日は4)
=WEEKDAY(A2,2) → 3(月曜日=1,火曜日=2…で数えるため水曜日は3)
=WEEKDAY(A2,3) → 2(月曜日=0,火曜日=1…で数えるため水曜日は2)

条件付き書式で土日を判定する場合、種類に2を指定すると「月曜日=1〜日曜日=7」という並びになり、土日は「6以上」という単純な条件で判定できるため、実務ではもっとも扱いやすい設定です。

条件付き書式と組み合わせて土日を自動色分けする

日付が入ったA列(2行目〜)に対して、土日の行全体を色分けする手順は次のとおりです。

  1. 色をつけたい範囲(例:A2:D31)を選択する
  2. 「ホーム」タブ→「条件付き書式」→「新しいルール」→「数式を使用して、書式設定するセルを決定」を選ぶ
  3. 数式欄に =WEEKDAY($A2,2)>=6 と入力する
  4. 「書式」ボタンから塗りつぶし色を指定して「OK」
=WEEKDAY($A2,2)>=6

A列を月曜始まり(種類2)で数えたとき、土曜日(6)・日曜日(7)に該当する行全体が指定した色で塗りつぶされます。日付を入れ替えたり行を挿入したりしても、条件付き書式は数式で自動判定されるため、塗り直しが不要になります。

WEEKDAYとTEXT関数(曜日書式)の違い

TEXT(A2,"aaa")

  • 「月」「火」のような文字列を表示するのに向く
  • 結果が文字列のため、条件付き書式の不等号(>=など)での判定には使いにくい
  • 人が読む曜日表示を作りたいときに使う

WEEKDAY(A2,種類)

  • 1〜7の数値を返すため条件式・IF・COUNTIFSと相性が良い
  • 条件付き書式・CHOOSE・SUMPRODUCTなど計算処理に向く
  • そのままセルに表示しても数字にしか見えない

「表に曜日の文字を表示したい」のか「土日かどうかを条件として判定したい」のかで、使うべき関数が変わります。両方必要な場合は、表示用のセルにはTEXT関数、条件付き書式の数式にはWEEKDAY関数、というように役割を分けて使うのが確実です。

実務でのよくある使用シーン

総務担当者であれば、勤怠表や会議室予約表の日付列にWEEKDAY関数を使った条件付き書式を設定し、土日の行を薄いグレーで自動的に塗り分けることで、印刷した紙面でも一目で休日がわかるようにできます。経理担当者であれば、支払期日の一覧表で「支払期日が土日にあたる行」を赤字で目立たせ、金融機関の休業日と重なる可能性がある支払いを事前にチェックする運用に使えます。営業事務担当者であれば、納品スケジュール表の土日納品予定を色分けし、配送業者の休業日と重ならないかを確認する目的でも活用されています。

WEEKDAY関数でよくあるエラー・トラブルと対処法

条件付き書式で全部の行、または全く色がつかない

条件付き書式の数式を作るとき、参照方法(相対参照・絶対参照)の指定を誤ると、選択範囲のどのセルを見ても常に同じ1つのセルだけを判定してしまい、範囲全体が色づく、または全く色がつかないという症状になります。

誤り例:=WEEKDAY($A$2,2)>=6 のように行まで固定してしまうと、選択範囲のどのセルも常にA2の判定結果だけを見て色分けされる

日付が入っている列(この例ではA列)だけを$で固定し、行番号は固定しない「$A2」という形にしてください。これにより、条件付き書式が各行のA列を正しく参照しながら判定できます。

種類(type)引数の指定忘れで色分けが1日ずれる

WEEKDAY関数の種類引数を省略すると、日曜日が1、土曜日が7として計算されます。この状態で「6以上」を土日の条件にしてしまうと、実際には金曜日(6)まで色がついてしまい、意図した曜日と1日ずれた色分けになります。

誤り例:種類を省略した=WEEKDAY($A2)>=6 は「金曜日・土曜日」を対象にしてしまう(正しくは土日を対象にしたい)

土日を「6以上」というシンプルな条件で判定したい場合は、必ず種類に2を指定してください。種類を省略したままにしたい場合は、条件を「WEEKDAY($A2)=1」(日曜日)「OR(WEEKDAY($A2)=1,WEEKDAY($A2)=7)」のように書き直す必要があります。

祝日の行に色がつかない(祝日はWEEKDAYだけでは判定できない)

WEEKDAY関数はあくまで曜日(月曜〜日曜)を計算するだけの関数で、その日が祝日かどうかを判断する機能は持っていません。「土日は色がつくのに祝日には色がつかない」という問い合わせは、この仕様を知らないことが原因でよく発生します。

対処法:祝日の日付一覧を別シートに用意し、条件付き書式の数式を =OR(WEEKDAY($A2,2)>=6, COUNTIF(祝日リスト,$A2)>0) のようにOR関数とCOUNTIF関数で組み合わせる

稼働日数の計算に祝日リストを使うNETWORKDAYS関数と同様、祝日情報は関数任せにできないため、年ごとに更新できる祝日リストを用意し、そこと照合する仕組みを別途組む必要があります。

初心者がつまずきやすいポイントとコツ

まとめ

WEEKDAY関数は、日付から曜日番号を数値として取り出す関数で、単体で表示するだけでなく、条件付き書式やIF、COUNTIFSなどの条件判定と組み合わせることで真価を発揮します。土日の自動色分けは、種類引数を2に統一し、条件付き書式の数式で日付列だけを絶対参照にする、という2点さえ押さえれば安定して運用できます。祝日まで含めたい場合はWEEKDAY単体では対応できないため、祝日リストとの組み合わせが必要になる点も忘れずに設計しましょう。

よくある質問

条件付き書式にWEEKDAYの数式を入れても色がつきません。原因は何ですか?
多くの場合、数式の参照方法(絶対参照・相対参照)の指定ミスが原因です。条件付き書式は「選択範囲の先頭セル」を基準に数式を作り、それを他のセルへ自動的にずらしながら判定します。日付が入っている列だけを固定したい場合は「$A2」のように列だけ$を付け、行方向にコピーされても列がずれないようにする必要があります。列も行も固定してしまう($A$2)と、選択範囲のどのセルを見ても常に同じ1つのセル(A2)だけを判定してしまい、意図した色分けになりません。
WEEKDAY関数だけで祝日も色分けできますか?
できません。WEEKDAY関数は日付から曜日番号を計算するだけの関数で、祝日かどうかを判定する機能は持っていません。祝日も含めて色分けしたい場合は、別セルに祝日の日付一覧を用意し、条件付き書式の数式でCOUNTIF関数などを使って「その日付が祝日リストに含まれているか」を判定し、WEEKDAYの条件とOR関数で組み合わせる必要があります。祝日リストは年ごとに更新が必要な点も忘れずに管理してください。
WEEKDAY関数の種類(type)引数は結局どれを指定すればいいですか?
土日を色分けする用途であれば、種類に2を指定して「月曜日を1、日曜日を7」として扱う方法が直感的でわかりやすくおすすめです。この場合、土日は6以上(=WEEKDAY(A2,2)>=6)という単純な条件で判定できます。種類を省略した場合は日曜日が1、土曜日が7になるため、土日の判定条件が「1または7」という書き方になり、OR関数が必要になって数式が長くなります。どちらでも正しく動作しますが、社内で使う数式は種類を統一しておくと、後から見返したときに条件の意味が分かりやすくなります。

関連記事

→ 日付の数式を作ってみる ← 記事一覧に戻る