エクセルのスケジュール表やシフト管理表を作成する際、土日や祝日の列を一つずつ手作業で塗りつぶしていませんか。月が変わるたびに設定をやり直すのは非常に手間がかかりますし、設定漏れなどのミスも起きやすくなります。この作業は「条件付き書式」という機能を活用すれば、日付を変えるだけで自動的に指定した列全体の色が変わるように設定することが可能です。一度仕組みを作ってしまえば、今後の業務効率が劇的に向上するはずです。

この記事では、エクセルにおいて曜日や祝日を自動判定し、特定の列や行全体に自動で塗りつぶし色を適用するための具体的な方法を解説します。エクセルでカレンダーやガントチャートなどを扱う方にとって、視覚的にわかりやすい表を効率よく作成するための必須テクニックと言えるでしょう。ぜひ参考にしながら、お手元のエクセルで試してみてください。
- 条件付き書式の基本とWEEKDAY関数を使った曜日の判定方法
- 特定の曜日(土日など)の「列全体」や「行全体」を自動で塗りつぶす手順
- 祝日リストを作成し、COUNTIF関数を組み合わせて祝日を自動判定する方法
- 空白セルの誤判定防止や、ファイルが重くなる現象など実務で直面しやすい問題の解決策
エクセルで曜日の自動色塗りつぶしを行う列設定
まずは、エクセルにおいて特定の日付から曜日を判定し、条件付き書式を使って指定した色で塗りつぶすための基本的なメカニズムについて解説します。セルの値(日付)に基づいて書式を動的に変更するための基礎知識をしっかりと押さえておきましょう。
条件付き書式の仕組みと曜日の判定
条件付き書式とは、指定した条件(数式)が「TRUE(真)」となったセルに対してのみ、あらかじめ設定したフォントの色や塗りつぶしの色などを自動的に適用する機能です。これを利用することで、「もしこのセルの曜日が日曜日なら赤く塗りつぶす」といった設定が可能になります。
エクセルで曜日を判定して色を塗る場合、日付が入力されているセルが基準となります。エクセルは日付を「1900年1月1日を『1』とする連続した数値(シリアル値)」として内部で管理しています。このシリアル値を関数を使って解析し、その結果を条件付き書式の判定エンジンに渡すことで、曜日に応じた自動的な書式設定が実現します。
WEEKDAY関数による土日指定
日付のシリアル値から曜日を判定する際、最もよく使われるのがWEEKDAY関数です。この関数は、日付データから曜日を示す数値を返します。基本構文は「=WEEKDAY(シリアル値, [種類])」です。
第2引数の「種類」を省略するか「1」を指定した場合、日曜日が「1」、月曜日が「2」…土曜日が「7」という数値として返されます。これを条件付き書式の数式に組み込みます。
- 日曜日を判定したい場合: =WEEKDAY(対象セル)=1
- 土曜日を判定したい場合: =WEEKDAY(対象セル)=7
また、第2引数に「2」を指定すると、月曜日が「1」となり、土曜日が「6」、日曜日が「7」になります。この場合、「=WEEKDAY(対象セル, 2)>=6」という数式一つで、土日両方を一括して条件に当てはめることができるため、設定ルールをシンプルにしたい場合に便利です。
TEXT関数を活用した文字列判定
WEEKDAY関数以外にも、TEXT関数を利用して日付を曜日の「文字列」に変換し、それを条件として判定する方法もあります。TEXT関数は数値を指定した表示形式の文字列に変換します。
例えば、「=TEXT(対象セル, “aaa”)」と入力すると、日付データは「日」「月」「火」といった日本語の曜日文字列として出力されます。
条件付き書式の数式には以下のように記述します。
- 日曜日を判定したい場合: =TEXT(対象セル, “aaa”)=”日”
- 土曜日を判定したい場合: =TEXT(対象セル, “aaa”)=”土”
このアプローチは、数式を見たときに直感的にどの曜日を指定しているのかが分かりやすいというメリットがあります。
複合参照を用いた行やセルの制御
エクセルで曜日の自動色塗りつぶしを行う際、多くの方が躓くのが「列全体」や「行全体」を塗りつぶすための参照設定です。セル単体ではなく、関連する行や列にも色を適用させるためには、エクセルの複合参照(「$」マークの付与位置)を正しく理解する必要があります。
「$」マークをつけた行や列は固定(絶対参照)され、つけていない部分は変動(相対参照)します。
列全体(縦方向)を塗りつぶす場合
2行目に日付が横方向に入力されており、その日付が土日の場合にその下の列全体に色を付けたいケースです。この場合、判定基準となる「日付のある行(2行目)」を固定し、列は動的に変動させる必要があります。
数式例: =WEEKDAY(A$2)=1
このように行番号「2」の前にのみ「$」を付けます。
行全体(横方向)を塗りつぶす場合
A列に日付が縦方向に入力されており、その日付が土日の場合に右側の行全体に色を付けたいケースです。この場合は、判定基準となる「日付のある列(A列)」を固定します。
数式例: =WEEKDAY($A2)=1
このように列番号「A」の前にのみ「$」を付けます。この設定により、条件付き書式が右側の列(B列やC列)に適用されても、常にA列の日付が評価対象となります。
祝日リストとCOUNTIF関数の連携
土日だけでなく、祝日も自動で塗りつぶしたい場合は、エクセルには日本の祝日を自動判定する機能がないため、自分で「祝日リスト」を作成する必要があります。
別シートなどに祝日の日付を縦に並べたマスターデータを作成し、そのリスト内にカレンダーの日付が存在するかどうかをCOUNTIF関数を使って判定します。
例えば、祝日マスターが「祝日リスト」シートのA列にある場合、条件付き書式の数式は以下のようになります。
数式例: =COUNTIF(祝日リスト!$A:$A, 対象セル)>0
この数式は、指定した範囲にカレンダーの日付が含まれている数をカウントし、1つでもあれば「TRUE」を返して色を塗るという仕組みです。会社独自の休業日(創立記念日など)も、このリストに追加するだけで自動的に表に反映されるため、非常に汎用性が高い方法です。
エクセルで曜日の自動色塗りつぶし列を応用する

基本的な設定方法を理解したところで、次は実際の業務で直面しやすいトラブルの解決策や、より高度な運用を行うための応用テクニックについて解説します。
空白セルを土曜日と誤判定する対策
月末が31日までない月(2月など)に、IF関数などで意図的に空白にしているセルが、なぜか「土曜日」として青色に塗りつぶされてしまうことがあります。
これは、エクセルが空白セルを「0」として認識し、シリアル値「0」を「1900年1月0日(土曜日)」として処理してしまう歴史的な仕様によるものです。WEEKDAY関数はこの「0」に対して「7(土曜日)」を返してしまいます。
これを防ぐためには、条件付き書式の数式に「セルが空白ではないこと」という条件を追加します。AND関数を使用します。
対策数式の例: =AND(対象セル<>””, WEEKDAY(対象セル)=7)
これにより、対象セルが空白の場合は条件が満たされないため、誤って土曜日として色が塗られるのを防ぐことができます。
ルールの競合と増殖を防ぐ優先順位
「日曜日は赤色」「祝日は黄色」という2つのルールを設定した場合、祝日が日曜日と重なった時にどちらの色が適用されるのでしょうか。
条件付き書式には優先順位があり、「条件付き書式ルールの管理」画面で上にあるルールほど優先して適用されます。祝日であることを優先して目立たせたい場合は、祝日のルールを日曜日のルールよりも上に配置(△ボタンで移動)する必要があります。
表の行を切り取って挿入したり、コピーペーストを繰り返すと、条件付き書式の「適用先」が細切れになり、ルール自体が複製されて増殖することがあります。これが続くとエクセルの動作が重くなる原因になります。コピーペースト時は「値のみ貼り付け」を利用するか、定期的に「ルールの管理」画面から重複したルールを削除し、適用範囲を整理するメンテナンスを行いましょう。
作業列による重いエクセルの最適化
数千行、数万行に及ぶ大きな表に複雑な条件付き書式を設定すると、エクセルを開いたりスクロールしたりする動作が極端に遅くなる(重くなる)ことがあります。条件付き書式は、画面に表示されるたびに再計算される性質があるためです。
これを解消するための効果的な方法が「作業列(ヘルパー列)」の導入です。
- 表の右端などの使わない列(非表示にしてもOK)に、土日祝日を判定する複雑な関数(例:=OR(WEEKDAY(A2)=1, WEEKDAY(A2)=7, COUNTIF(祝日リスト, A2)>0))を入力し、あらかじめ「TRUE」か「FALSE」を計算させておきます。
- 条件付き書式の数式には、その作業列を参照するだけのシンプルな数式(例:=$Z2=TRUE)を設定します。
このように計算の負担をエクセルの通常のセル計算に逃がすことで、条件付き書式の処理が軽くなり、動作速度が大幅に改善されます。
スプレッドシートやMacの互換性
エクセルで作成したファイルをGoogleスプレッドシートにアップロードしたり、Mac版のエクセルで共同編集したりする場合でも、WEEKDAY関数などの基本的な数式はそのまま機能します。
しかし、Googleスプレッドシートはブラウザ上で動作するため、条件付き書式の適用範囲を「シート全体」のように広げすぎると、処理が追いつかずフリーズしやすくなります。データが入力されている最小限の範囲に留めるように設定することが重要です。
また、Mac版のエクセルで作業する場合、数式入力中に「F4」キーを押しても絶対参照($マーク)が切り替わらないことがあります。その場合は「Command + T」を使用するか、Macのシステム設定でファンクションキーの動作を変更する必要があります。
エクセルでの曜日の自動色塗りつぶし列まとめ
エクセルで曜日や祝日を自動判定して列や行を自動色塗りつぶしする設定は、条件付き書式とWEEKDAY関数、そして複合参照($マーク)の組み合わせで実現します。この設定を取り入れることで、毎月の手作業による色付け作業から解放され、ミスのない正確なスケジュール管理が可能になります。
最初は参照の設定(A$2なのか$A2なのか)が少し難しく感じるかもしれませんが、一度仕組みを作ってしまえば長く使い回せる強力なツールになります。また、空白セルの誤判定防止や、作業列を使った重い動作の回避など、実践的な対策も合わせて覚えておくと、さらに安定した運用ができるでしょう。ぜひこの記事を参考に、業務の効率化に役立ててください。
