【Excel】ガントチャートを関数と条件付き書式だけで作る — 遅れているタスクを自動で赤くする方法

この記事は約10分で読めます。

タスクの一覧に開始日と終了日を書いても、どれが遅れているかは1行ずつ日付を読まないと分かりません。

この記事では、日付の横に期間の帯を色で塗るガントチャート風の進捗表を作ります。使うのは IF・AND などの関数と条件付き書式だけです。グラフ・アドイン・マクロは使いません。

この記事で分かること

  • 開始日から終了日までのセルを自動で塗る方法
  • 期限を過ぎて終わっていないタスクだけを赤くする方法
  • 進捗率のぶんだけ帯を濃い色にする方法
  • 色のルールが重なったとき、どの色が勝つのか

完成形はこうなります。

完成したガントチャート(「完成版」シートのA1:W11)。遅延2件の帯の残りが赤、進捗ぶんが濃い青、10/9の列は帯の無い行だけ薄い黄色

赤は遅れ、濃い青は終わったぶん、薄い青は残りの予定です。帯の無いセルが黄色になっている列が基準日(10/9)です。

どんな場面で使うか

  • イベント準備で、10〜20個の作業を並行して進めている
  • 月次作業(締め・集計・報告)の進み具合を、朝会で画面共有して確認する
  • 管理ツールを入れるほどではないが、Excelの一覧では遅れに気づけない

タスクが数百件ある場合や、作業の依存関係を自動で計算したい場合は、専用ツールのほうが向いています。

基本説明

サンプルファイル(記事末尾)を使います。

  • 「進捗表」シート … 入力データだけの状態。手順はこのシートで進めます
  • 「完成版」シート … 手順をすべて終えた状態。うまくいかないときの見比べ用です

「進捗表」シートの元データはこうなっています。

「進捗表」シートの元データ(A1:E11)。B1に基準日2026/10/09、4〜11行目にタスク8件

C列が開始日、D列が終了日、E列が進捗率です。B1 の基準日は、「今日の時点で遅れているか」を判定するための日付です。

これから次の列を足します。

  • F列 … 状態(数式で判定する)
  • G列 … 空けておく(表と帯の区切り)
  • H〜W列 … 帯を塗る場所。3行目に 10/1〜10/16 の日付を並べる

仕組み

帯を塗る場所(H4:W11)の各セルで、次のことを判定させます。

  • そのセルの列の日付(3行目)が、行のタスクの開始日〜終了日に入っているか

入っていれば塗る。これを条件付き書式の数式で書くと、日付を書き換えるだけで帯が伸び縮みします。日数は土日も含めて数えます。

手順

ここからは「進捗表」シートで操作します。

ステップ1 状態の列を作る

F3 に 状態 と入力し、F4 に次の数式を入れて F11 までコピーします。

=IF(E4>=1,"完了",IF(D4<$B$1,"遅延",IF(C4<=$B$1,"進行中","未着手")))

判定は上から順です。

  1. 進捗率が100%以上 → 完了
  2. 終了日が基準日より前 → 遅延
  3. 開始日が基準日以前 → 進行中
  4. どれでもない → 未着手

$B$1 と固定するのは、下へコピーしても基準日のセルがずれないようにするためです。

F列に状態が入った状態。F4の数式はIFの入れ子

完了・遅延・進行中・未着手が2件ずつになります。

ステップ2 日付の見出しを横に並べる

H3 に 2026/10/1 と入力し、I3 に次の数式を入れて W3 までコピーします。

=H3+1

次に、日にちの数字だけを表示させます。

  1. H3:W3 を選ぶ
  2. 「セルの書式設定」→「表示形式」→「ユーザー定義」
  3. 種類に d と入力する
  4. H〜W列の列幅を狭くする(## と出たら少し広げる)

見出しは「10/1」と文字で打たず、日付の値にしてください。文字だと帯が正しく塗られません(「よくあるエラー」の2つ目)。

3行目に1〜16の日にちが並んだ状態。I3の数式は =H3+1

ステップ3 基準日の列に目印を付ける

ここから条件付き書式のルールを4つ作ります。後から作ったルールほど優先されるので、負けてよいものから順に作ります。

  1. H3 から W11 まで右下へドラッグして、H3:W11 を選ぶ
  2. 「ホーム」タブ →「条件付き書式」→「新しいルール」
  3. 「数式を使用して、書式設定するセルを決定」を選ぶ
  4. 数式欄に次の数式を入れる
=H$3=$B$1

「新しい書式ルール」ダイアログで「数式を使用して、書式設定するセルを決定」を選び、数式欄に =H$3=$B$1 を入れた状態

最後に「書式」→「塗りつぶし」で薄い黄色を選んで「OK」を押し、元の画面でも「OK」を押します。

10/9 の列が縦に黄色くなります。

ステップ3の結果。10/9のP列が3〜11行目まで薄い黄色

H$3 は「3行目に固定」の意味です。どの行のセルも、その列の見出しの日付を見に行きます。

ステップ4 予定の帯を塗る

今度は H4 から W11 まで右下へドラッグして選びます。3行目は含めません(ステップ5・6も同じ)。

ステップ3と同じ手順で、薄い青のルールを作ります。

=AND(H$3>=$C4,H$3<=$D4)

「列の日付が開始日以上、かつ終了日以下」のセルが塗られ、8件すべてのタスクに帯が出ます。

ステップ4の結果。8件すべてのタスクに薄い青の帯。10/9の列は帯の無い行だけ薄い黄色

$C4 は「C列に固定」の意味です。どの列のセルも、自分の行の開始日を見ます。$ の付け方は条件付き書式で行ごとに色を付ける記事でも説明しています。

ステップ5 遅れているタスクを赤くする

H4:W11 を選び、赤のルールを作ります。

=AND(H$3>=$C4,H$3<=$D4,$F4="遅延")

ステップ4の条件に「状態が遅延」を足しただけです。出展資料作成と備品リスト作成の帯が赤くなります。

ステップ5の結果。5行目・7行目の帯が赤

ステップ6 進捗率のぶんだけ濃くする

H4:W11 を選び、濃い青のルールを作ります。

=AND(H$3>=$C4,H$3-$C4<ROUND(($D4-$C4+1)*$E4,0))
  • $D4-$C4+1 … タスクの日数
  • 日数 × 進捗率 … 終わったぶんの日数。開始日からこの日数ぶんが濃くなります
  • ROUND … 日数が半端になったとき、塗るセル数を整数にそろえます

たとえばパネル制作は 10日 × 40% = 4日 なので、10/6〜10/9 が濃い青になります。

ステップ6の結果。進捗のある帯の左側が濃い青(冒頭の完成図と同じ状態)

ステップ7 ルールの順番を確かめる

H4 を選んでから、「ホーム」タブ →「条件付き書式」→「ルールの管理」を開きます。上から次の順に並んでいれば完成です。

「条件付き書式ルールの管理」ダイアログ。4つのルールが上から進捗ぶん・遅延・予定の帯・基準日の列の順

順番 ルール 色 適用先
1 進捗ぶん(ステップ6) 濃い青 =$H$4:$W$11
2 遅延(ステップ5) 赤 =$H$4:$W$11
3 予定の帯(ステップ4) 薄い青 =$H$4:$W$11
4 基準日の列(ステップ3) 薄い黄色 =$H$3:$W$11

色が重なったセルは、上のルールが勝ちます。遅延タスクの帯が「終わったぶんは濃い青、残りは赤」になるのはこのためです。

順番が違うときは、ルールを選んで上下の矢印(▲▼)で入れ替えます。

進捗率と基準日を書き換えてみる

「完成版」シートで、色の変わり方を確かめます。

  • E5(出展資料作成)を 100% にする → F5 が「完了」になり、赤が消えて帯が全部濃い青になる
  • B1 を 2026/10/13 にする → 配布物印刷も「遅延」になり、帯の残りが赤になる。黄色の列は 10/13 に移り、未着手だった2件は「進行中」になる

運用するときは、B1 を =TODAY() にします。ファイルを開いた日を基準に遅れが判定されます。この記事では、読んだ日で結果が変わらないよう基準日を固定しています。

よくあるエラー

1行だけ端から端まで塗られ、ほかの行には帯が出ない

原因: 条件付き書式の数式の $ の位置がずれています。

直し方: 日付の見出しは H$3、開始日・終了日は $C4・$D4 にします。$H$3 のように両方を固定すると、すべてのセルが10/1だけで判定されます。そのため、10/1を含む会場手配の行だけが全部塗られます。

範囲の選び方も確認してください。ステップ3は H3 から、ステップ4〜6は H4 からドラッグします。数式は、選び始めたセルを基準に解釈されます。

帯が塗られない列がある、または帯の外まで濃い青が出る

原因: 3行目の見出しが、日付ではなく文字列になっています。'10/1 のように入力したときなどです。

見分け方: その列の見出しだけ 10/1 のまま表示されます。空いているセルに =ISNUMBER(H3) と入れて FALSE なら文字列です。

直し方: 見出しのセルの表示形式を「標準」に戻し、ステップ2(入力と表示形式 d)をやり直します。

進捗率60%のつもりが「完了」になり、帯が右端まで濃い青になる

原因: 書式が「標準」のセルに 60 と入力しています。値は60(=6000%)なので「完了」と判定されます。

直し方: E列の書式を先に「パーセンテージ」にしておきます。こうすると 60 と入力しても 60% として入ります。

遅延タスクが赤くならない

原因: 多いのはルールの順番です。薄い青(予定)のルールが赤(遅延)より上にあると、赤が隠れます。

直し方: 「ルールの管理」で、ステップ7の表の順に並べ替えます。順番が合っているのに赤くならないときは、F列が「遅延」になっているかを見てください。

行を追加したら、一部だけ色が付かなくなった

原因: 行を貼り付けると、適用先が =$H$4:$W$7,$H$9:$W$12 のように分かれることがあります。

直し方: 「ルールの管理」で、適用先を =$H$4:$W$12 のような1つの範囲に直します(基準日の列のルールは =$H$3:$W$12)。追加した行には、F列の数式もコピーしてください。

まとめ

  • 帯は「列の日付が開始日〜終了日に入っているか」を条件付き書式で判定して塗る
  • 日付の見出しは H$3、開始日・終了日は $C4・$D4
  • 状態は IF の入れ子で1列にまとめ、条件付き書式からはその列を見る
  • 色が重なったら上のルールが勝つ。負けてよいものから作ると並べ替えが要らない
  • 運用では基準日を =TODAY() に。進捗率は % で入力する

まずはサンプルの「完成版」シートで、進捗率や基準日を書き換えてみてください。

関連記事

対応バージョン: Excel 2016 以降(Microsoft 365 を含む)。新しい関数は使っていません

サンプルファイル

記事中で使用しているサンプルデータはこちらからダウンロードできます。

タイトルとURLをコピーしました