エクセルでスケジュール表やカレンダーを作る時、土日や祝日の色付けを手作業でやっていませんか。私も以前はカレンダーを見ながら一つずつ色を塗っていましたが、月が変わるたびにやり直すのが本当に手間で、どうにか自動化できないかと悩んでいました。実はエクセルには、曜日の色付けを自動で行ってくれる便利な機能が備わっています。行全体の色を変えたり、祝日を反映させたり、さらには空白セルで色が付いてしまうエラーを防いだりすることも可能です。また、ルールが複数あって優先順位がわからなくなったり、ファイルが重いと感じたりした時の対処法も知っておくと、運用がずっと楽になりますよ。この記事では、条件付き書式を使った基本的な方法から、スプレッドシートとの違い、さらにはマクロを使った応用テクニックまで、エクセルの曜日の色付けに関するあらゆる疑問を解消できる情報をお届けします。

- 条件付き書式を使って土日や祝日に自動で色を付ける基本手順
- 特定の日付に関連する行全体や列全体の色を変更する方法
- 空白セルの誤判定など、よくあるエラーの回避策とルールの優先順位設定
- ファイルの動作が重い時の改善策やマクロを用いた高度な自動化手法
エクセルの曜日に色付けする基本設定
まずは、エクセルでカレンダーを作る際に欠かせない、曜日ごとの基本的な色付け設定からマスターしていきましょう。ここで紹介する機能を使えば、面倒な手作業から解放され、月が変わっても自動で色が反映されるようになりますよ。祝日の自動判定や、行全体の色塗り、そして設定時のちょっとしたつまずきポイントまで、順番に解説していきますね。
カレンダーの祝日を自動判定する
土日の色付けはWEEKDAY関数を使えば比較的簡単に設定できますが、少しハードルが上がるのが「祝日」の対応です。エクセルには日本の祝日を自動で判定する機能が標準で備わっていないため、一工夫する必要があります。
最も確実で運用しやすいのは、別シートに「祝日リスト」を作成する方法です。例えば「祝日」という名前のシートを作り、A列にその年の祝日の日付を縦に入力しておきます。そして、メインのカレンダーシートで「条件付き書式」を設定します。
設定する数式は、=COUNTIF(祝日!$A:$A, $A2)>=1 のようになります。これは、「カレンダーの日付($A2)が、祝日リスト(祝日!$A:$A)の中に1つ以上あるか」を判定する数式です。この条件が満たされたら、セルを赤色にするなどの書式を設定すればOKです。
毎年祝日リストを手動で更新するのが面倒な方は、内閣府のホームページで公開されている祝日のCSVデータを、エクセルの「Webからデータを取得」機能で連携させる方法もおすすめです。これなら自動で最新の祝日が反映されますよ。
スケジュールの行全体を塗る手順
「日付のセルだけじゃなく、その日の予定を入力する行全体に色を付けたい!」というのも、よくある要望ですよね。これを実現するには、エクセルの「複合参照」という概念を理解する必要があります。
条件付き書式で行全体を塗りたい場合、数式のセル参照に少しだけ魔法をかけます。例えば、A列に日付が入っていて、A列からE列までを行全体として塗りたい場合、A2からE31などの範囲を選択してから、条件付き書式に数式を入力します。
土曜日を行全体で青く塗りたい時の数式は、=WEEKDAY($A2)=7 となります。ここで重要なのが、Aの前に付いている「$」マーク(絶対参照)です。この「$A2」という書き方をすることで、「右隣のB列やC列のセルを判定する時も、必ずA列の日付を見てね」という指示になり、結果として行全体が同じ色で塗られるんです。
よくある失敗は、選択範囲の開始セルと数式内のセル番号がズレてしまうことです。A2セルから範囲選択したなら、数式も必ず「$A2」から始めてください。「$A1」にしてしまうと、色が1行ズレてしまいます。
ルールの優先順位による競合解決
土日と祝日のルールを両方設定すると、「もし土曜日が祝日だったら、どっちの色になるの?」という疑問が湧くかと思います。エクセルでは、複数の条件が重なった場合、「ルールの優先順位」によって表示される色が決まります。
一般的に、会社などのカレンダーでは「土日よりも祝日であることを目立たせたい」ことが多いですよね。その場合は、条件付き書式の「ルールの管理」画面を開いてみてください。設定したルールが一覧で表示されているはずです。
エクセルは、このリストの上にあるルールを優先して適用します。ですから、祝日のルールを選択して「上へ移動(▲)」ボタンを押し、リストの一番上に持ってきましょう。これで、土曜日と祝日が重なっても、しっかりと祝日の色が表示されるようになります。
月末の空白セルの誤作動を防ぐ
31日分の固定枠のカレンダーを作って、2月や4月など日数が少ない月を表示した時に、月末の「空白の行」がなぜか土曜日の色(青など)になってしまう現象に遭遇したことはありませんか。これは結構有名なエクセルあるあるなんです。
原因は、エクセルが空白セルを「0」として扱い、さらに日付のシリアル値「0」を1900年1月0日=「土曜日」と計算してしまう仕様にあります。これを防ぐには、「セルが空白ではない」という条件を追加してあげる必要があります。
数式を修正する場合は、AND関数を使って =AND($A2<>"", WEEKDAY($A2)=7) と記述します。これで「空白じゃなくて、かつ土曜日」の時だけ色が付くようになります。
別の方法として、「セルが空白だったら」というルールを新たに作り、最優先(一番上)に配置して「条件を満たす場合は停止」にチェックを入れるというテクニックもあります。これでも同じように誤作動を防ぐことができます。
ファイルが重い場合の改善アプローチ
条件付き書式はとても便利ですが、設定を増やしすぎたり、広範囲に適用しすぎたりすると、「エクセルの動作が重い…」と感じる原因になります。条件付き書式は、少しスクロールするだけでも常に裏側で計算を繰り返しているからです。
重くなってしまった時の主な改善アプローチは以下の3つです。
- 適用範囲を見直す: 列全体(A:Aなど)を選択して設定している場合は、必要な行数(A2:A1000など)だけに絞り込みましょう。
- ルールの断片化を直す: コピー&ペーストを繰り返すと、同じルールが無数に増殖してしまうことがあります。「ルールの管理」で不要なルールを削除し、一つの範囲に統合し直してください。
- 「条件を満たす場合は停止」を活用する: 不要なセルの判定処理を途中で止めることで、エクセルの計算負担を減らすことができます。
エクセルの曜日の色付けを応用する手法

基本的な色付けができるようになったら、次は一歩進んだ応用テクニックに挑戦してみましょう。エクセルの標準機能だけでなく、マクロを使ったり、他の関数と組み合わせたりすることで、業務の効率はさらにアップします。また、他の表計算ツールを使う際の違いについても知っておくと便利ですよ。
マクロを用いたフォーマット処理
数万行のデータがある場合や、条件付き書式によるファイルの重さがどうしても気になる場合は、思い切ってマクロ(VBA)を使って色付けを自動化するのも一つの手です。
条件付き書式が「常に監視して色を変える」のに対し、マクロは「実行した時だけ色を塗る」という違いがあります。マクロで処理してしまえば、その後はただの「色が塗られたセル」になるため、ファイルの動作は非常に軽快なまま保たれます。
例えば、「毎月新しいシートを作り、日付を入力し、土日祝日の色を塗る」という一連の作業をマクロに登録しておけば、ボタンを1回クリックするだけでカレンダーが完成します。少し勉強は必要ですが、ルーティンワークが多い方には非常におすすめの方法です。
スプレッドシートでの設定の違い
最近はGoogleスプレッドシートを仕事で使う機会も増えましたよね。スプレッドシートでも、エクセルとほぼ同じように曜日の色付けが可能です。
WEEKDAY関数やCOUNTIF関数を使った数式の書き方はエクセルと全く同じです。ただし、設定画面の場所が異なります。スプレッドシートでは、上部のメニューから「表示形式」>「条件付き書式」を選び、右側に出てくる設定パネルで「カスタム数式」を選択して数式を入力します。
スプレッドシートは、適用範囲をカンマ区切りで複数指定しやすいというメリットがあります。離れた列に同じルールを適用したい時は、スプレッドシートの方が直感的に設定できるかもしれません。
WORKDAY関数で稼働日を算出
カレンダーに色を付けるだけでなく、「土日祝日を除いて、今日から5営業日後は何日?」といったスケジュール計算を自動でやりたい時は、WORKDAY関数の出番です。
=WORKDAY(開始日, 日数, [祝日リスト]) という数式を使えば、指定した日数後の「稼働日」をピンポイントではじき出してくれます。条件付き書式で作った「祝日リスト」をこの関数でも指定すれば、休業日をしっかりと回避して納期などを計算してくれます。
さらに、美容室や不動産屋さんなど「土日が休みじゃない」業種の場合は、WORKDAY.INTL関数が便利です。この関数なら、「火曜と水曜を定休日にする」といった変則的な休日のパターンも柔軟に設定できます。
| 関数名 | 特徴 | こんな時におすすめ |
|---|---|---|
| WORKDAY関数 | 土日を自動で休日として扱う | 一般的なカレンダー通りの企業 |
| WORKDAY.INTL関数 | 休日の曜日を自由に指定できる | 平日休みや、週休1日の業種 |
土日の色分けと休日の例外処理
実務でカレンダーを運用していると、「基本は土日休みだけど、今月の第3土曜日は出勤日になる」といった例外がどうしても発生します。こんな時、条件付き書式でガチガチに設定していると、後から手動で色を消そうとしても消えなくて困ってしまいます。
このような例外に柔軟に対応するには、カレンダーとは別に「出勤日フラグ」や「特別休日フラグ」を入れる列を用意しておくのがスマートな解決策です。
例えば、B列に「出勤」と入力した場合、条件付き書式の数式を =AND(WEEKDAY($A2)=7, $B2<>"出勤") のように変更します。こうすれば、「土曜日だけど『出勤』と書いてある日は青色にしない」という例外処理をシステム的に組み込むことができます。
エクセルにおける曜日の色付けまとめ
エクセルの曜日の色付けは、最初は少しややこしく感じるかもしれませんが、一度仕組みを作ってしまえば、毎月のカレンダー作りが劇的に楽になります。
シリアル値の理解から始まり、条件付き書式を使った土日の自動判定、複合参照を使った行全体への適用、そして祝日リストとの連携など、一つひとつの機能を組み合わせることで、自分の業務にぴったり合ったオリジナルカレンダーを作ることができます。もしファイルが重いと感じたら設定を見直し、さらに高度な自動化を求めるならマクロにも挑戦してみてくださいね。
この記事で紹介した内容を参考に、ぜひお手元のエクセルファイルでも曜日の自動色付けを試してみてください。きっと、スケジュール管理の効率がぐんとアップするのを実感できるはずです。
