毎月の「月間予定表」や「勤務管理表」を Excel で作成するたびに、手作業で日付を打ち直したり、カレンダーを見ながら土日や祝日のセルを1つずつ色付けしたりしていませんか?「自動化したいけれど、条件付き書式の数式が複雑でどこから手を付ければいいか分からない…」というのは、Excelの業務効率化で誰もがつまずく高い壁です。
この記事では、そんな悩みを解決するために、条件付き書式を使って月間予定表を完全自動化する方法を、完成イメージ・手順・仕組みの順に分かりやすく解説します。
こんにちは、当ブログを運営している「デンスケ」です。デンスケは電気インフラのエンジニアとして10年以上実務に携わり、これまでに電験1種や技術士(電気電子部門)といった超難関の国家資格に「完全独学」で合格してきました。
インフラ運用の現場仕事や、膨大なデータを扱う独自の試験分析の現場では、スケジュールやタスクの「データ管理ミス」は絶対に許されません。専用の管理システムがない泥臭い環境だからこそ、デンスケはExcelの条件付き書式を徹底的に使い倒し、手作業によるミスを100%排除する仕組みを作ってきました。
この記事では、そんなデンスケの現場実務の知恵を凝縮し、年と月を入力するだけで「日付・曜日・土日・祝日の色付け」までを完全自動で生成する月間予定表の作り方を解説します。
さらに、2月や小の月(30日まで)の末尾に発生する「その月に存在しない翌月の日付」を、条件付き書式と停止ルールを使って綺麗に自動非表示(白文字化)にする、一歩進んだ実務ワザまで図解付きで丁寧に紐解きます。
この記事を読めば、毎月の不毛なカレンダー手作業から完全に解放され、崩れにくく更新に強い、プロ品質の予定表シートが誰でも簡単に作れるようになります。ぜひ最後まで参考にしてください!
【完成イメージ】年月を変えるだけで自動更新される月間予定表のゴール
まずは、完成した月間予定表のイメージをご覧ください。

年と月を入力すると、その月の日付と曜日が自動的に表示され、土日・祝日の行が自動で色付けされます。さらに、その月に存在しない日付(29〜31日など)は自動的に非表示になります。
これらの処理は、次の条件付き書式によって実現しています。

続いて、これらを実現するための具体的な手順と仕組みを解説していきます。
【手順1】自動生成の土台となる「表の枠組み」を作成する
月間予定表の自動化を行うために、まずは日付と曜日を配置するための表の枠組みを作成します。ここでは、2026年4月の月間予定表を作成しますが、後から年月を変更して再利用できます。
ステップ1:データの増減に対応できる31日分の予定表枠を作る
次のように、2 行目に作成する月間予定表の「年」と「月」を入力し、4 行目に項目名、5 行目以降に具体的な予定を入力する形式で、31 日分の行をあらかじめ用意します。

ステップ2:DATE関数でその月の「初日のシリアル値」を自動生成する
B5 セルに =DATE(B2, C2, 1)を入力し、その月の初日となる日付データを作成します。DATE 関数の仕組みや表示形式の設定については、この後のセクションで詳しく解説します。

B6 セルに =B5+1を入力し、2日目の日付データを作成します。

C5セルに =B5を入力し、1日目の日付データを参照させます。曜日は後ほど表示形式を変更して表示させます。

同様に、C6セルに=B6を入力し、2日目の日付データを参照させます。

ステップ3:オートフィルで31日目までの日付データをコピーする
B6:C6を選択し、オートフィルで31日目までコピーします。

ステップ4:Ctrl+1(ユーザー定義)で日付と曜日の表示形式を整える
続いて、①〜④に対して、順番に表示形式を設定していきます。

①のセルには年が数値データとして入力されているため、数値の後ろに「年」を付けて表示できるよう、表示形式の「ユーザー定義」で、書式文字列に #"年" を設定します。なお、セルの書式設定は対象セルを選択した状態で Ctrl+1 を押すと開くウインドウから変更できます。

同様に、②のセルには数値の後ろに「月」を付けて表示できるよう、表示形式の「ユーザー定義」で、書式文字列に #"月" を設定します。

③のセル範囲には、①・②と異なり、DATE 関数によって作成された “日付データ(シリアル値)” が入力されています。日付データのうち「日」の部分だけを表示するため、表示形式の「ユーザー定義」で書式文字列にd"日" を設定します。

④のセル範囲には、③と同様に“日付データ(シリアル値)” が入力されています。曜日を表示するため、表示形式の「ユーザー定義」で書式文字列にaaa を設定します。

これで表の枠組みは完成し、次のようになります。 最終行には 5 月 1 日が表示されていますが、条件付き書式を設定すると、その月に存在しない日付として自動的に非表示になります。

【手順2】内閣府の公式CSVデータを活用した「祝日リスト」を用意する
祝日行を自動で色付けするために、まず祝日リストを用意します。
祝日リストは自分で作成しても構いませんが、内閣府が公開している『国民の祝日について』から CSV 形式で祝日データを取得できるため、これを利用すると便利です。
「syukujitsu」シートを作成し、そのデータを貼り付けます。

【手順3】土日・祝日の自動色付けと不要な日付を隠す4つのルール設定
表の枠組みと祝日リストができたら、土日・祝日の色付けや存在しない日付の非表示を行うための条件付き書式を設定します。なお、数式の動作原理については後のセクションで詳しく解説します。
これから設定する4種類の条件付き書式は、いずれも日付データの範囲 B5:E35 を対象とします。

設定範囲を選択した状態で、ホームタブの「条件付き書式」から「新しいルール」を選び、4つのルールを順に設定していきます。

土曜日の設定:WEEKDAY関数で土曜の行全体を水色にする
数式欄に=WEEKDAY($B5)=7を入力します。

書式設定では、塗りつぶしの色に水色を指定します。

日曜日の設定:WEEKDAY関数で日曜の行全体をピンクにする
数式欄に=WEEKDAY($B5)=1を入力します。

書式設定では、塗りつぶしの色にピンクを指定します。

祝日の設定:COUNTIF関数で祝日リストと一致する行全体をピンクにする
数式欄に =COUNTIF(syukujitsu!$A:$A,$B5) を入力します。

書式設定では、塗りつぶしの色にピンクを指定します。

翌月日付の設定:MONTH関数でその月に存在しない日付を自動で非表示にする
数式欄に =MONTH($B5)<>$C$2 を入力します。

書式設定では、フォントの色を白にします。

さらに、罫線の設定を追加します。初期状態では、赤枠で示した部分について、セルのまわりの四辺がグレーの線で囲まれているはずです。

左側の線を一度クリックすると、次のように実線で表示されます。

もう一度左側の線をクリックすると、次のように線が消えた状態になります。

同じ手順で、右側と下側の罫線も非表示に設定します。

仕上げの管理:ルールの管理画面で「条件を満たす場合は停止」にチェックを入れる
ホームタブの「条件付き書式」から「ルールの管理」を選択し、設定済みのルール一覧を表示します。

書式ルールの表示は「このワークシート」を選択します。初期状態では、右側の「条件を満たす場合は停止」のチェックボックスには何もチェックが入っていないはずです。一番上のルール(その月に存在しない日付を非表示にする)に対して、チェックを入れます。

完成
以上で設定は完了です。最初に示した完成イメージどおりに仕上がります。
B2 セルに年、C2 セルに月を入力すると、日付と曜日が自動生成され、土日・祝日の色付けが行われます。また、その月に存在しない日付は自動的に非表示になります。
例えば、2027 年 2 月を指定した場合は次のようになります。なお、B2 セルと C2 セルは表示形式によって「年」「月」と表示されますが、入力する値は数値のみとしてください。

【理論編】なぜ自動で色が変わる?各関数の仕組みと判定ロジック
ここまでは自動化の手順を中心に説明してきましたが、ここからはその仕組みについて解説していきます。
DATE関数による日付の自動生成と「シリアル値」の基本
EXCELの日付データは、内部的には実際には「シリアル値」という数値で保存されています。シリアル値とは「1900年1月1日」を「1」として、1 日ごとに 1 ずつ増加させて表現する数値のことです。例えば、「1900年1月2日」は「2」、「2026年1月1日」は「46023」です。
このシリアル値に対して表示形式を設定することで、日付や曜日など、さまざまな形式で表示させることができます。
DATE 関数は、年・月・日の数値を指定することで、対応する日付のシリアル値を生成する関数です。
【例】
入力:=DATE(2026,4,1)
出力:2026/4/1
なお、セルの表示形式が「標準」の場合は、日付を返す関数の結果が自動的に日付形式へ切り替わります。これは、日付として解釈できる文字列を入力した際に、Excel が日付データとして認識する仕組みと同じ動作です。
表示形式に d を設定すると、日付データの「日」の数値を表示できます。d は day の頭文字です。
なお、表示形式に d"日" のようにダブルコーテーションで囲った文字列を付け加えると、その文字もあわせて表示させることができます。
また、表示形式に aaa を設定すると、日付データの曜日(1 文字)を表示できます。a は abbreviated(短縮形)の頭文字です。
WEEKDAY関数+複合参照($B5)で行全体が土日に染まる仕組み
WEEKDAY 関数は、日付データを指定することで曜日を判定し、その曜日に対応する数値を返す関数です。既定の設定では、1 が日曜日、2 が月曜日 … 7 が土曜日に対応します。
数式を用いた条件付き書式では、各セルに対して、イコールに続く部分がTRUEかFALSEかを判定し、TRUEの場合に書式が反映されます。
=WEEKDAY($B5)=7 という数式を設定した場合は、論理式「WEEKDAY($B5)=7」が成立するときにTRUEが返され、設定した書式が反映されます。
なお、数式内でセルを参照する場合は、設定範囲の最も左上のセルを基準に記載します。$B5 のように列に絶対参照($)を付けているため、B5 の日付が土曜日であれば、同じ行の C5、D5、E5 も同じ条件で TRUE となり、設定した書式が行全体に適用されます。
なお、この記事は「条件付き書式の実践編」です。条件付き書式の仕組みをまだ理解していない方は、 先にこちらの 基本編 を読むとスムーズです。
COUNTIF関数で「0以外はすべてTRUE」となるExcelの裏仕様と祝日判定
COUNTIF 関数は、指定した範囲の中で「条件を満たすセルの数」を数える関数です。
COUNTIF(syukujitsu!$A:$A,$B5) と設定した場合は、「syukujitsu」シートのA列全体のうち、B5の値と一致するセルの個数が返されます。
EXCELでは、0はFALSE、0以外の数値はTRUEとして扱われます。そのため、条件付き書式に= という数式を設定した場合は、B列の日付データが祝日リストに含まれていればCOUNTIFの結果が1以上になり、TRUEと判定されます。結果として、その行全体に設定した書式が適用されます。COUNTIF(syukujitsu!$A:$A,$B5)
MONTH関数と不等号(<>)で翌月の日付を白文字化する条件判定のロジック
MONTH 関数は、日付データを指定すると、その「月」に対応する数値を返す関数です。
という数式を設定した場合は、論理式「=MONTH($B5)<>$C$2」が成立するときにTRUEが返され、設定した書式が反映されます。MONTH($B5)<>$C$2
B列の日付データの「月」がC2セルの月と一致しない場合、論理式はTRUEと判定されるため、その行全体に設定した書式(フォントを白・罫線非表示)が適用されます。
複数ルールの競合を解決!条件付き書式の「優先順位」を整理する
「条件付き書式のルールの管理」に表示されるルール一覧では、後から設定したルールほど上に並び、上に表示されているルールほど優先的に適用されます。
例えば、「土曜を水色にするルール」よりも「祝日をピンクにするルール」が上に表示されている場合、同じ日が土曜かつ祝日に該当すると、上位のルールが優先されるためピンクで色付けされます。
今回の場合、「その月に存在しない日付を非表示にするルール」を一覧の一番上に配置し、さらに「条件を満たす場合は停止」にチェックを入れています。このチェックを入れていない場合、非表示とした日付が土日祝に該当すると、後続の色付けルールが適用されてしまうため、必ずチェックを入れる必要があります。
このように、複数のルールに該当するデータがある場合は、どの書式を優先して適用したいかを踏まえて、ルールの並び順や「条件を満たす場合は停止」の要否を適切に設定する必要があります。
まとめ|条件付き書式をマスターして月間予定表の作成を完全自動化しよう
この記事では、条件付き書式を活用して、Excel の月間予定表を自動で見やすく整える方法を解説しました。
最後に、この記事を通じて習得できた重要なポイントを定着させるためにおさらいしましょう。
この記事で身につくこと:
- 日付(シリアル値)と DATE / MONTH / WEEKDAY 関数の仕組みの理解
- 各関数の内部挙動をロジックから学び、日付や曜日の自動判定に応用するスキルが身につきました。
- COUNTIF 関数を用いた「祝日リスト」との自動一致判定
- 内閣府の公式CSVデータを利用し、対象の日付が祝日に該当するかどうかを自動判別させる実務ワザを習得しました。
- 条件付き書式による「土日」「祝日」「存在しない日付」の自動判定と制御
- 曜日や祝日に合わせて行全体を自動で色分けし、さらに2月や小の月の末尾に発生する「存在しない翌月の日付」を自動で非表示にする設定ができるようになりました。
- ルールの優先順位と「条件を満たす場合は停止」の正しい使いこなし
- 複数のルールが重なったときの競合ルールを整理し、非表示にしたセルに無駄な色を塗らせないための「停止チェック」の重要性を理解しました。
- 毎月の予定表の手作業なしでの効率的な更新
- 一度仕組みを作ってしまえば、年月を切り替えるだけでシート全体が連動する、実務に強い運用の土台が完成しました。
条件付き書式を活用した月間予定表は、崩れにくく、更新に強く、視認性の高いレイアウトを自動で維持できるという大きなメリットがあります。今回の方法を取り入れることで、毎月の予定表作成が格段に効率化され、実務で使いやすいシートを安定して運用できます。
次に読むべき記事|条件付き書式をさらに使いこなすためのロードマップ
今回の月間予定表の作成で数式のロジックや関数の使い方に少し迷われた方は、まずこちらの「基本・応用編」をご覧ください。条件付き書式がセルや行全体を染める基本的な判定の仕組み(TRUE・FALSEの評価)を、どこよりも丁寧に解説しています。
【Excel】条件付き書式の基本と応用|数式を使った「行まるごと色付け」を徹底解説
今回の月間予定表でマスターした「日付と関数の組み合わせ」を活かし、次はプロジェクト管理や実務の工程管理の主役となる「ガントチャート(工程表)の自動作成」に挑戦してみましょう。タスクの開始日と終了日を入力するだけで、該当期間を自動で色付けするスマートな仕組みを原理から徹底解説しています。
【Excel】条件付き書式でガントチャートを自動作成|日付と数式の原理から徹底解説



