ガントチャートをエクセルで作る手順|線を引き直す時間が積み上がる
ガントチャートをエクセルで作ろうとして検索した人の多くは、作り方そのものより「これで運用が回るのか」を気にしています。日付を横に並べてバーを引くところまでは、条件付き書式を使えば半日もかかりません。詰まるのは、作ったあとです。
工程が1本ずれたときに、後ろのタスクを手で押し出す。担当者から進捗を聞き取って、色を塗り替える。誰かがファイルを開いていて保存できない。この作業は1回あたりは短いのに、予定が動く回数だけ発生します。線を引き直す時間は、表を作る時間より確実に長くなります。
この記事では、まずエクセルでガントチャートを実用的な水準まで作る手順を、数式と条件付き書式のレベルまで具体的に書きます。そのうえで、予定が動くたびに手が要る構造がどこにあるのかを分解し、表計算のまま延命する工夫と、板型の道具に移す判断軸を整理します。エクセルを捨てる話ではありません。どこまでがエクセルの領分なのかを見極める話です。
エクセルの工程表はいまも現役で、多くの場合それで足りる
道具の話を始める前に、はっきりさせておきたいことがあります。工程表をエクセルで作るのは、多くの現場で正しい判断です。新しい道具の記事はたいてい「エクセル管理からの脱却」と書きますが、その前提が当てはまらないチームは相当数あります。
予定が動かない工程では、表計算の工程表が最適解になる
工事の工程表、印刷物の入稿スケジュール、決算や監査のような年次の定型業務。これらに共通するのは、着手前に順番と期間がほぼ決まっていて、走り出したあとに大きくは動かないことです。動かない予定を管理するなら、表計算の工程表は速くて安いです。
理由は3つあります。1つ目は、行の追加も列の追加も自由で、誰の許可も要らないこと。工程表に「検収予定日」の列を足したいと思ったら、その場で足せます。2つ目は、計算が自由なこと。人日を積み上げて工数を出す、単価を掛けて金額を出す、稼働率で割って必要人数を出す。この手の計算は、表計算の得意分野です。3つ目は、誰でも読めること。取引先に渡しても、そのまま開いて理解してもらえます。
新しい道具に移したチームが「結局エクセルに戻した」となる原因の多くは、この3つのどれかを失ったことです。特に2つ目の計算の自由さは、専用ツールでは取り戻しにくい部分です。
社外に紙やPDFで配る用途なら、表計算のほうが速い
工程表を印刷して現場に貼る、PDFにして取引先に送る、報告資料に貼り込む。この用途では、表計算のほうが手数が少ないです。改ページプレビューで横1ページに収める、印刷タイトル行を固定して2ページ目以降にもタスク名を出す、余白を詰める。こうした紙面の調整は表計算の標準機能で全部できます。
板型やカレンダー型のツールは画面で見ることを前提に作られているので、A3横1枚に収めた工程表を出そうとすると、書き出し機能の仕様に振り回されることになります。1回きりの提出物のために道具を替える必要はありません。
判断が分かれるのは、この記事の後半で扱う「予定が動く」「複数人が更新する」「社内の人が毎日見る」の3条件が重なったときだけです。
工程表をめぐる現状と、道具選びの前提
工程管理の道具は、この数年で一気に増えました。ボード型、カレンダー型、表とタイムラインを行き来する型、文書の中に埋め込む型。無料で始められるものも多く、選択肢が多すぎて決めきれないという相談は珍しくありません。
一方で、実際に現場で動いている工程表の多くは、いまだに表計算ソフトの上にあります。中小企業のデジタル化は段階的に進むものとして整理されており、表計算による管理はその途中段階として位置づけられています。
中小企業のデジタル化は、紙や口頭による業務から、アナログな情報のデジタル化、デジタル技術を用いた業務の効率化へと段階的に進むものとして整理されている。表計算ソフトによる管理は、この途中に位置する。 出典: chusho.meti.go.jp
ここで大事なのは、段階の後ろが常に正しいわけではないことです。表計算で足りている業務を無理に専用ツールへ移すと、失うもののほうが大きくなります。移す価値があるのは、表計算の弱点が毎週の作業時間として表に出ているときだけです。
その弱点がどこにあるのかを見極めるには、まず表計算で作れるところまでちゃんと作ってみるのが早道です。中途半端に作った工程表を見て「エクセルは限界だ」と判断してしまうと、実は設定を知らなかっただけ、ということが起こります。次の章では、条件付き書式を使った実用水準のガントチャートを、手順として最後まで書きます。
ガントチャートをエクセルで作る手順
ここからは実作業です。テンプレートを配布するのではなく、自分のチームの工程に合わせて組み替えられるように、考え方と数式をそのまま書きます。
列の設計を先に決める
最初にやるのは、左側の情報列を決めることです。バーを描く部分より、この列設計のほうが後々効いてきます。最低限そろえたいのは次の並びです。
| 列 | 内容 | 備考 |
|---|---|---|
| A | 工程・タスク名 | 階層を持たせるなら字下げかレベル列を別に持つ |
| B | 担当 | 名前の表記ゆれを避けるため入力規則のリストにする |
| C | 開始日 | 日付書式。文字列で入れない |
| D | 終了日 | 数式で出すか手入力か、どちらかに統一する |
| E | 日数 | 営業日で数えるか暦日で数えるかを決めておく |
| F | 進捗率 | 0から1のパーセント書式 |
| G以降 | 日付軸 | ここに条件付き書式でバーを描く |
つまずきやすいのは、開始日と終了日を文字列で入れてしまうことです。「9/1」と打つと日付になりますが、「9月1日開始」と打つと文字列になり、以降の数式が全部動かなくなります。C列とD列には表示形式で日付を指定し、入力規則で日付以外を弾いておくと事故が減ります。
担当のB列は、入力規則のリスト(データ > データの入力規則 > 入力値の種類をリストにする)にしておきます。「田中」「田中さん」「T」が混在すると、あとで担当別に集計したいときに使えません。
日付軸を並べる
G列から右へ日付を並べます。G1に工程の開始日を入れ、H1には =G1+1 を入れて右方向にオートフィルします。週単位の粒度にするなら =G1+7 です。
見出しは3行構成にすると読みやすくなります。
- 1行目に月:
=IF(MONTH(G2)<>MONTH(F2),TEXT(G2,"m月"),"")として、月が変わったときだけ月名を出す - 2行目に日付そのもの:
=G1を入れて、表示形式のユーザー定義をdにする - 3行目に曜日:
=TEXT(G2,"aaa")で「月」「火」と出る
列幅は2.5から3.0程度まで狭めます。日付の列をまとめて選択して、右クリックから列の幅を数値で指定するのが確実です。
そのうえで、表示タブのウィンドウ枠の固定を使います。左のA列からF列と、上の見出し行を固定しておかないと、右にスクロールした瞬間にどのタスクの行を見ているのか分からなくなります。この設定を入れていない工程表は、それだけで読む気を失わせます。
期間を計算する
日数の計算は、営業日で数えるか暦日で数えるかを最初に決めます。実務では営業日で数えることが多いはずです。
営業日で日数を出すなら、E2に次を入れます。
=NETWORKDAYS(C2,D2,祝日)
祝日 は別シートに祝日の一覧を作り、名前の定義(数式 > 名前の定義)で名前を付けた範囲です。年をまたぐ工程を扱うなら、翌年分まで入れておきます。土日以外を休みにしているチームは NETWORKDAYS.INTL を使い、第3引数で休業曜日のパターンを指定します。
逆に、開始日と所要日数から終了日を出したいなら、D2に次を入れます。
=WORKDAY(C2,E2-1,祝日)
E2-1 としているのは、初日を稼働日に数えるためです。ここを間違えると全体が1日ずつずれます。月単位の工程なら EDATE で「3か月後の同日」を出せます。
前工程の終了日の翌営業日から始めたいときは、C列に =WORKDAY(D1,1,祝日) のような式を入れることになります。これが後述する「依存関係を数式で持つ」入り口です。便利ですが、ここから壊れ始めるので注意が要ります。
条件付き書式でバーを描く
ここが本題です。バーは図形で描くのではなく、条件付き書式でセルを塗ります。図形で描くと行の挿入や日付の変更に追随しません。
日付軸の範囲(たとえば G4:CZ200)をまとめて選択し、ホーム > 条件付き書式 > 新しいルール > 数式を使用して、書式設定するセルを決定、と進みます。ここで入れる数式は、選択範囲の左上のセルを基準に書きます。
工程のバー本体は次の数式です。
=AND(G$1>=$C4, G$1<=$D4)
日付の行は行を固定して G$1、開始日と終了日は列を固定して $C4 $D4 と書くのがポイントです。この参照の付け方を間違えると、バーが斜めにずれたり1行目にしか出なかったりします。書式は塗りつぶしの色だけ指定します。
そのうえで、次のルールを足していきます。
- 土日を薄いグレーにする:
=WEEKDAY(G$1,2)>=6 - 祝日を薄いグレーにする:
=COUNTIF(祝日,G$1)>0 - 今日の列を目立たせる:
=G$1=TODAY()で左右の罫線を太くする - 進捗の済んだ分を濃い色にする:
=AND(G$1>=$C4, G$1<$C4+ROUND(($D4-$C4+1)*$F4,0))
最後の進捗ルールは、開始日から進捗率の分だけ進んだ位置まで濃い色を塗るものです。バー本体のルールより上に置き、条件付き書式のルール管理画面で順序を入れ替えます。上にあるルールが優先されます。必要なら「条件を満たす場合は停止」にチェックを入れます。
遅れを自動で目立たせる
工程表の価値の大半は、遅れているものが一目で分かることにあります。次のルールを行全体(A列からF列)に当てます。
=AND($F4<1, $D4<TODAY())
終了日を過ぎているのに進捗が100%になっていない行を赤くする、という意味です。これがあるだけで、週次の会議で「どこが遅れていますか」と聞く時間がなくなります。
もう少し踏み込むなら、遅れ日数の列を足して =IF($F4=1,"",MAX(0,TODAY()-$D4)) を入れておくと、遅れの大きい順に並べ替えられるようになります。
印刷と配布の設定
紙で配るなら、最後に印刷設定を詰めます。ページレイアウトタブの印刷タイトルで「タイトル列」にA列からF列を指定すると、2ページ目以降にもタスク名と担当が出ます。拡大縮小印刷で「横1ページ」に設定し、縦は指定しません。改ページプレビューで、月の切れ目にページの境目が来るように青い線を動かします。
ここまでやれば、専用ツールの出力と比べても見劣りしない工程表になります。作業時間としては、初回で半日から1日というところです。
手順どおりに作ったあとに何が起きるか
問題は運用に入ってからです。工程表を作った本人が、その後に何をしているのかを分解します。
1本ずらすと、後ろが全部ずれる
現実の工程は動きます。承認が1日遅れる、素材の入稿が週明けになる、担当者が体調を崩す。このとき、遅れた工程の後ろにあるタスクを全部押し出す必要があります。
C列とD列を手入力にしている場合、これは完全に手作業です。20行の工程表で中盤の1本が3日遅れたら、後ろの十数行の開始日と終了日を書き換えることになります。並び替えてある表なら、押し出したあとに順序が崩れていないかも見直します。
前工程の終了日を参照する数式を入れておけば自動で押し出せますが、今度は別の問題が出ます。
依存関係を数式で持たせると、いずれ壊れる
=WORKDAY(D3,1,祝日) のような式でタスクをつないでいくと、工程表は一種の連鎖計算になります。行を挿入すると参照がずれる、行を削除すると参照エラーになる、並べ替えると全部が入れ替わる。表計算の並べ替えは数式の参照を追随させないことがあるため、ソートした瞬間に工程表が意味不明になるという事故は珍しくありません。
さらに、実際の依存関係は「Aが終わったらB」だけではありません。「Aが半分終わったらBに着手できる」「AとBの両方が終わらないとCは始まらない」「Aの終了から中2日空けてD」といった関係を数式で表現しようとすると、式が長くなり、あとから読めなくなります。作った本人が異動したら、誰も触れない工程表が1つ残ります。
更新の当番が1人に固定される
これが実務で一番重いところです。工程表を触れるのは、条件付き書式のルールと参照の付け方を理解している人だけになります。結果として、進行を預かっている人がチャットや口頭で進捗を集め、自分でファイルを開いて色を塗り替える、という流れが固定されます。
この作業は1回10分から30分程度でも、週に何度も発生します。しかも、その人が休むと工程表が止まります。現場でよく聞くのは、「更新が追いつかなくなって、途中から誰も工程表を見なくなった」という話です。表が実態とずれた瞬間に、工程表は信用を失います。
ファイルが分裂する
もう1つ避けにくいのが版の分裂です。メールに添付して配った瞬間に複製が生まれ、受け取った人が自分のメモを書き足します。共有フォルダに置いても、誰かが開いている間は読み取り専用になるので、手元にコピーを作って作業する人が出ます。
こうして「工程表_最新.xlsx」「工程表_最新_20260901.xlsx」「工程表_最新_修正版.xlsx」が並びます。どれが正なのかを確認するやり取りが、また時間を食います。クラウド保存の共同編集を使えば緩和できますが、条件付き書式の多い大きなファイルは動作が重くなりやすく、結局ローカルで編集する人が出てきます。
線を引き直す時間はどこに消えているか
「エクセルは限界」という言い方は雑です。どの作業に時間が消えているのかを分けて見ると、対処のしかたが変わります。工程表の更新作業は、次の4つに分解できます。
- 集める時間: 各担当に進捗を聞く、チャットのやり取りを追う
- 直す時間: 日付を書き換える、後ろを押し出す、色を塗り替える
- 直したことを伝える時間: 更新しましたと連絡する、ファイルを配り直す
- 直しの正しさを確かめる時間: 参照がずれていないか、行がずれていないかを見る
このうち、道具を替えて減らせるのは主に1と3、そして4です。2の「直す時間」は、どんな道具でも誰かが判断して入力する必要があるので、ゼロにはなりません。
逆に言えば、1と3と4がほとんど発生していないチームは、エクセルのままで困っていないはずです。担当が数人で、隣の席にいて、工程表を見るのも自分だけ。この条件なら、集める時間も伝える時間も、席を立てば終わります。
見る時間と直す時間が同じ場所で競合する
表計算の工程表には、構造上の制約が1つあります。編集しているファイルは、同時に閲覧の対象でもある、ということです。
進行を預かる人が工程表を開いて押し出し作業をしている間、他のメンバーがそのファイルを開くと読み取り専用になるか、編集中の中途半端な状態を見ることになります。押し出しの途中で「明日どこから手をつければいいですか」と聞かれても、その時点の表は正しくありません。
板型やタイムライン型のツールで最も違うのはここです。1つのカードの日付を動かすことと、他の人がボードを見ていることが競合しません。誰かが更新している最中でも、他の人は最新の状態を見られます。この差は機能表には出にくいのですが、運用に入ると効いてきます。
エクセルのまま延命する現実的な工夫
道具を替えないという選択肢も当然あります。そのうえで、引き直しの回数と手数を減らす工夫をいくつか挙げます。
粒度を週にする
日単位で管理すると、1日の前後で表を直すことになります。週単位にすれば、3日の遅れが同じ週に収まる限り、表を直す必要がありません。工程が2か月を超えるプロジェクトでは、週単位のほうが実態に合うことが多いです。
日付軸のG1に週の開始日(月曜)を入れて、H1に =G1+7 を入れるだけで週単位の軸になります。バーの数式はそのままで動きます。
バッファ列を持つ
各工程に「予備日」の列を持ち、終了日を =WORKDAY(C4, E4-1+G4, 祝日)(G4がバッファ日数)のように計算します。小さな遅れをバッファで吸収して、後ろを押し出さずに済ませる運用です。バッファを使い切ったときだけ押し出す、というルールにすれば、引き直しの回数はかなり減ります。
更新を週1回にまとめる
毎日直すのをやめて、更新する日を決めます。「毎週金曜の夕方に更新して、月曜の朝に配る」と決めれば、集める作業も直す作業も1回にまとまります。週の途中の変更は、チャット側で追いかけます。工程表を常に正しく保つことは諦めて、正しくなる日を決める、という割り切りです。
クラウド保存の共同編集にする
ファイルの分裂を止める効果は大きいです。ただし、条件付き書式のルールが多いファイルはブラウザでの編集が重くなりやすく、ルールによっては表示が再現されないこともあります。導入する前に、実際のファイルで開いて動きを確かめてから決めます。
これらの工夫で足りるなら、それが一番安い解決です。工夫しても引き直しが週の作業として残るなら、そのときに道具を検討します。
表計算から板へ移すかどうかの判断軸
ここからは、移すべきかどうかを4つの軸で判断します。全部当てはまる必要はありません。上から2つが重い軸です。
判断軸1: 予定が動く頻度
週に何回、工程表の日付を書き換えているか。数えてみると分かります。月に1回か2回なら、表計算で困りません。週に何度も押し出しが発生するなら、日付を動かす操作そのものが軽い道具に移す価値があります。
カードを掴んで動かすだけで日付が変わる、後ろのタスクとの関係を目で見て判断できる、という操作のしやすさは、回数が多いほど効いてきます。
判断軸2: 更新する人の数
工程表を更新できる人が1人しかいないなら、その人が休んだ日に工程表は止まります。担当者本人が自分のタスクの進捗を更新する形にできれば、集める時間が丸ごと消えます。
ここで問題になるのが、更新してもらうための敷居です。条件付き書式の入った表計算ファイルを「各自で更新してください」と配っても、まず更新されません。壊すのが怖いからです。板型の道具に移す最大の理由は、更新する人を増やせることにあります。
判断軸3: 工程表を見る人の数
見る人が自分と上長の2人なら、ファイルを送れば済みます。10人以上が日常的に見るなら、配り直しの手間と、古い版を見ている人が出る問題が無視できなくなります。
判断軸4: 社外に出すかどうか
社外に定期提出する工程表なら、表計算のまま残す判断が有力です。相手の環境を選ばず、印刷レイアウトを自分で詰められる利点は大きいです。この場合、社内の進行管理は別の道具で行い、提出用の工程表だけ表計算で作る、という二重運用も現実的な選択です。二重に見えますが、提出用は月1回の作成で済むことが多いので、日々の引き直しからは解放されます。
板型の道具に移すときに失われるもの
移す話をするなら、失うものも正直に書く必要があります。表計算から専用ツールに移して不満が出るのは、だいたい次の4点です。
1つ目は、自由な計算です。人日を積み上げて金額を出す、稼働率で割る、複数の工程表を1つのシートに集約して合計を出す。この種の計算は、表計算のほうが速くて自由です。工程管理と原価管理を1つのファイルでやっているなら、移行後も原価側は表計算に残ることになります。
2つ目は、印刷です。前述のとおり、紙面を自分で詰められるのは表計算の強みです。
3つ目は、慣れです。チームの全員が表計算の操作を知っています。新しい道具は、その分の学び直しが要ります。導入の失敗は機能不足より、使い方が浸透しないことで起きます。
4つ目は、道具ごとの割り切りです。ボード型のタスク管理は、進行を1枚の板にまとめることに集中している代わりに、外部サービスとの自動連携や複雑な自動化では、その分野に特化した道具に及びません。何ができて何ができないのかは、できることのページで機能の範囲を確かめてから判断するのが確実です。データの預け方や取り扱いが気になる場合は、安全性の考え方に運用の前提が書かれています。
移行そのものにも手間がかかります。既存のカードを自動で取り込める範囲は道具ごとに違い、対応していない場合は手で作り直すことになります。ボード型からの移行についてはTrelloからの移行に取り込みの流れがまとまっています。表計算からの移行は、どの道具でも一度整理し直す作業が入ると考えておくのが安全です。
他の道具との比較から見える、工程表の置き場所
工程表をどこに置くかを決めるとき、比較の対象になるのは表計算だけではありません。すでに何らかのツールを使っているチームなら、その道具の中で工程表を持てないかを先に考えるはずです。道具ごとに、工程表との相性ははっきり分かれます。
カード中心のボード型は、作業の状態を動かすことに強い一方で、期間を横に並べて見る用途は追加の設定が要ることが多いです。すでにカードで日々の作業を回しているなら、工程表だけを別に持つのか、同じ場所に置くのかが論点になります。この整理はTrelloとの比較に、板の考え方の違いとしてまとまっています。
タスクの粒度を細かく管理する型のツールでは、担当と期限の管理が中心になり、工程の全体像を1枚で見せる部分の作り込みが必要になります。Asanaとの比較では、機能の多さと使い続けやすさのバランスをどう見るかを扱っています。
文書とデータベースを兼ねる型の道具は、自由度が高い代わりに、チーム全員が同じ形で入力し続けられるかが分かれ目になります。工程表を作れるかどうかより、作ったあとに誰が維持するかという問題は、表計算とよく似た形で残ります。Notionとの比較に、自由度と運用の関係が整理されています。
多機能な管理基盤として設計されたツールは、工程表を含む広い範囲をカバーします。その分、設定と運用の設計に時間がかかりやすく、小さなチームでは持て余すことがあります。monday.comとの比較では、必要な機能と使わない機能の切り分け方を扱っています。
日本の開発現場で使われてきた課題管理型のツールは、課題と工程表の連動に強みがあります。開発以外の業務を同じ場所で回すかどうかで評価が変わります。Backlogとの比較に、この使い分けが書かれています。
国内発のボード型ツールとの違いは、機能の有無より、料金の区切り方と画面の考え方に出ます。Jootoとの比較で、その差の見方を整理しています。道具ごとの位置づけを横に並べて見たいなら、比較の一覧から入るのが早いです。
比較の際に見落とされやすいのが、料金の区切り方です。工程表の機能が上位プランにあると、進行を預かる人だけでは決められず、稟議の話になります。機能で絞らず、区切るのは人数とボードの数だけという料金の設計であれば、「まず工程表を1つ作ってみる」という試し方ができます。プランの区切り方は料金で確認できます。なお、各サービスの料金や上限は変わるため、判断の直前に公式のページで確かめることをおすすめします。この記事では、確かめられない数字は書いていません。
導入前に出やすい疑問、たとえば移行の範囲や日本語対応の状況などはよくある質問に集めてあります。
最後にもう一度書いておくと、この記事はエクセルをやめる理由を並べたものではありません。予定が動かない工程、社外に配る工程表、計算が主目的の管理表。これらは表計算のほうが速いです。移す価値があるのは、線を引き直す作業が週の仕事として定着していて、更新できる人が1人に固定されているときだけです。その1点だけを見て決めれば、道具選びで迷う時間はかなり短くなります。
Q1. エクセルでガントチャートを作るとき、バーは図形と条件付き書式のどちらで描くべきですか?
条件付き書式です。図形で描くと、行を挿入したり日付を変更したりしたときにバーが追随せず、位置を手で直すことになります。日付軸の範囲を選択して「数式を使用して、書式設定するセルを決定」から =AND(G$1>=$C4, G$1<=$D4) のような数式を入れれば、開始日と終了日を変えるだけでバーが動きます。
Q2. 営業日と暦日、どちらで日数を数えればよいですか?
実務では営業日が基本です。NETWORKDAYS 関数に祝日一覧の範囲を渡せば、土日と祝日を除いた日数が出ます。土日以外を休みにしているなら NETWORKDAYS.INTL で休業曜日を指定します。開始日と所要日数から終了日を出す場合は WORKDAY(開始日, 日数-1, 祝日) とし、初日を稼働日に数える点に注意してください。
Q3. エクセルの工程表を続けるか、専用ツールに移すかの判断基準はありますか?
週に何回日付を書き換えているか、更新できる人が何人いるか、の2点で判断できます。更新が月に1回か2回で、更新するのも見るのも自分だけなら、表計算のままで困りません。週に何度も押し出しが発生し、更新できるのが1人だけという状態が続いているなら、道具を変える価値があります。
Q4. 専用ツールに移すと、エクセルでできていたことのうち何ができなくなりますか?
自由な計算、印刷レイアウトの細かい調整、チーム全員がすでに操作を知っているという慣れ、の3つは失われます。原価計算と工程管理を同じファイルでやっている場合、計算部分は表計算に残ることが多いです。社外への定期提出がある場合は、社内の進行管理だけツールに移し、提出用は表計算で作る使い分けが現実的です。