Excelで予定表や勤務表を作っていると、土日や祝日の行だけ自動で色を付けたいことがあります。
このような場合は、条件付き書式にWEEKDAY関数を組み合わせると、日付から曜日を判定できます。祝日については、別に用意した祝日リストと照合すれば対応できます。
土日を同じ色にする基本の数式は、次のとおりです。
=AND($A2<>"",WEEKDAY($A2,2)>=6)
祝日リストがE2:E20にある場合は、次の数式を使います。
=AND($A2<>"",COUNTIF($E$2:$E$20,$A2)>0)
この記事では、日付がA列にある予定表を例に、土日・祝日へ色を付ける手順を順番に解説します。
1. 条件付き書式で土日・祝日を自動色分けできる
次の完成例では、A列の日付を基準に行全体を色分けしています。
- 土曜日:青
- 日曜日:赤
- 祝日・休業日:赤

色を手作業で塗る方法では、日付を変更したときに色も直さなければなりません。条件付き書式なら、A列の日付が変わるたびに曜日と祝日を判定し直します。
土日の判定にはWEEKDAY関数を使い、祝日の判定にはCOUNTIF関数で祝日リストとの一致を確認します。
2. WEEKDAY関数で土日を判定する
WEEKDAY関数は、日付に対応する曜日を番号で返す関数です。
=WEEKDAY(A2,2)
2つ目の引数に2を指定すると、曜日番号は次のようになります。
| 曜日 | 月 | 火 | 水 | 木 | 金 | 土 | 日 |
|---|---|---|---|---|---|---|---|
| 曜日番号 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
土曜日と日曜日は6以上なので、土日を同じ色にする条件は次のように書けます。
=WEEKDAY($A2,2)>=6
ただし、この式だけではA列が空白の行まで土曜日として判定される場合があります。そのため、実際には「空白ではない」という条件も加えます。
=AND($A2<>"",WEEKDAY($A2,2)>=6)
$A2<>""は「A列の日付が空白ではない」、WEEKDAY($A2,2)>=6は「曜日番号が6以上」という意味です。AND関数によって、両方を満たす行だけに色が付きます。
3. 土日の行全体に同じ色を付ける
予定表がA1:C8にあり、1行目が見出しの場合を例にします。
(1)色を付ける範囲を選択する
見出しを除いたA2:C8を選択します。
日付セルだけに色を付けたい場合は、A2:A8を選択してください。行全体に色を付けるときは、予定や担当者などを含む範囲全体を最初に選びます。
(2)新しいルールを開く
「ホーム」タブから「条件付き書式」→「新しいルール」を開きます。
続いて、「数式を使用して、書式設定するセルを決定」を選択します。
(3)土日を判定する数式を入力する
数式の入力欄に、次の式を入力します。
=AND($A2<>"",WEEKDAY($A2,2)>=6)

(4)塗りつぶし色を設定する
「書式」をクリックし、塗りつぶし色を選びます。最後に「OK」をクリックしてルールを確定します。
これで、A列の日付が土曜日または日曜日になっている行へ、自動で色が付きます。
数式の$A2は、判定に使う列をA列に固定し、行番号だけを2、3、4と変化させる書き方です。$の位置と適用範囲の関係は、関連記事「Excelの条件付き書式で行全体に色を付ける方法」でも詳しく解説しています。
4. 土曜日と日曜日を別の色にする
土曜日を青、日曜日を赤というように分けたい場合は、2つのルールを作ります。
土曜日を判定する数式は次のとおりです。
=AND($A2<>"",WEEKDAY($A2,2)=6)
このルールの塗りつぶしを青にします。
日曜日を判定する数式は次のとおりです。
=AND($A2<>"",WEEKDAY($A2,2)=7)
こちらの塗りつぶしを赤にします。
曜日番号6と7は重ならないため、2つのルールが同時に成立することはありません。祝日用のルールも追加する場合は、祝日と土日が同じ日になったときにどちらの色を優先するか、ルールの管理画面で順番を確認します。
5. 祝日リストに一致する行へ色を付ける
Excelは、日本の祝日を自動で持っているわけではありません。そのため、シート内または別シートに祝日・会社休業日の一覧を用意します。
ここでは、E2:E20に祝日の日付を入力しているものとします。
(1)祝日の日付を縦に入力する
E列には、次のように日付を1行ずつ入力します。
| E列:祝日・休業日 |
|---|
| 2026/8/12 |
| 2026/8/14 |
| 2026/9/22 |
日付は文字列ではなく、Excelが日付として認識できる形式で入力してください。日付の入力ルールをそろえる理由は、関連記事「日付の入力ルールを統一するだけで、集計・並べ替えミスがなくなる」も参考になります。
(2)COUNTIF関数で祝日リストと照合する
A2の日付が祝日リストに含まれるか確認する式は、次のとおりです。
=COUNTIF($E$2:$E$20,$A2)>0
COUNTIF関数が1以上を返せば、A2の日付が祝日リストに存在するという意味です。
空白行を除外する条件も加えた完成形は、次の式です。
=AND($A2<>"",COUNTIF($E$2:$E$20,$A2)>0)

この式を条件付き書式へ設定し、塗りつぶしを赤などにすれば、祝日リストと一致した行へ色が付きます。
祝日リストの範囲$E$2:$E$20は、行ごとにずれないよう列と行の両方を固定します。一方、判定する日付の$A2は、行番号だけが変わるようにします。
6. 土日と祝日を1つのルールで同じ色にする
土日と祝日をすべて同じ色にするなら、OR関数で2つの条件をまとめることもできます。
=AND($A2<>"",OR(WEEKDAY($A2,2)>=6,COUNTIF($E$2:$E$20,$A2)>0))
この数式は、次の順番で判定します。
- A列が空白ではない
- 土曜日または日曜日である、もしくは祝日リストに含まれる
土日と祝日の色を分ける必要がない場合は、1つのルールで管理できるため設定が分かりやすくなります。
土曜日を青、日曜日と祝日を赤にする場合は、前の章までに作成した3つのルールを使ってください。
7. 日付セルだけでなく行全体へ色を付けるポイント
条件付き書式では、最初に選択した範囲が「色を付ける範囲」になります。数式のセル参照は「どのセルを見て判定するか」を表します。
例えばA列の日付を基準にA列からC列まで色を付ける場合は、次の組み合わせです。
| 設定項目 | 内容 |
|---|---|
| 適用先 | =$A$2:$C$8 |
| 判定するセル | $A2 |
| 土日の式 | =AND($A2<>"",WEEKDAY($A2,2)>=6) |
$A2のAの前だけに$を付けることで、B列やC列のセルにもA列の日付を基準とした同じ判定を適用できます。
$A$2と書くと行番号まで固定され、すべての行がA2だけを見て判定してしまいます。行全体が同じ色になる場合は、この違いを確認してください。
8. 土日・祝日が正しく色分けされないときの確認点
(1)日付が文字列になっている
見た目が2026/8/15でも、文字列として保存されているとWEEKDAY関数で正しく判定できません。
セルの表示形式を変えるだけでは文字列が日付に変換されない場合があります。警告メニューから日付へ変換するか、DATEVALUE関数などを使って実際の日付データに直します。
(2)数式の行番号と適用範囲がずれている
適用先がA2:C8から始まる場合、数式も$A2から始めます。適用先がA3からなら、数式も$A3にします。
(3)空白行まで色が付く
WEEKDAY関数は空白セルを日付の数値として扱う場合があります。数式の先頭に$A2<>""を加え、空白ではないことを先に確認してください。
空白セルの判定が意図どおりにならない仕組みは、「Excelの条件付き書式で空白セルまで色が付く原因は?」で詳しく解説しています。
(4)祝日リストの範囲がずれている
祝日リストの範囲は$E$2:$E$20のように絶対参照にします。E2:E20のままだと、ルールが下の行へ適用されるときに参照範囲もずれることがあります。
(5)日付に時刻が含まれている
A列に2026/8/12 9:00のような時刻まで入っていると、日付だけの祝日リストとは完全一致しません。この場合は、日付部分だけを比較するため、判定する値をINT関数で整数にします。
=AND($A2<>"",COUNTIF($E$2:$E$20,INT($A2))>0)
Excelの日付と時刻が数値として保存される仕組みは、「Excelの日付・時間計算を逆引きで解説」も参考にしてください。
(6)適用先の範囲が日付列だけになっている
日付セルには色が付くのに予定や担当者のセルへ色が付かない場合は、ルールの「適用先」を確認します。行全体を色付けするなら、=$A$2:$C$8のように表全体を指定します。
9. まとめ
Excelの条件付き書式で土日・祝日へ色を付けるときは、日付の曜日判定と祝日リストの照合を分けて考えると設定しやすくなります。
| やりたいこと | 数式 |
|---|---|
| 土日を同じ色にする | =AND($A2<>"",WEEKDAY($A2,2)>=6) |
| 土曜日だけ色を付ける | =AND($A2<>"",WEEKDAY($A2,2)=6) |
| 日曜日だけ色を付ける | =AND($A2<>"",WEEKDAY($A2,2)=7) |
| 祝日リストと一致した日を色付け | =AND($A2<>"",COUNTIF($E$2:$E$20,$A2)>0) |
| 土日・祝日を同じ色にする | =AND($A2<>"",OR(WEEKDAY($A2,2)>=6,COUNTIF($E$2:$E$20,$A2)>0)) |
行全体に色を付ける場合は、色を付けたい表全体を適用先に指定し、数式では$A2のように判定列だけを固定します。
土曜日・日曜日・祝日を自動判定できるようにしておけば、予定表の日付を更新するたびに色を塗り直す必要がなくなります。
