先週までに終わるはずだったデザインが、まだ上がってこない。気づいたのは、後工程のコーディングを外注先に渡す前日でした。工程表を作っていなかったわけではなく、作ったあと誰も開いていなかっただけです。

ガントチャートは、スプレッドシートで作れます。専用ツールも、テンプレートの購入も要りません。手で入れるのは「開始日」と「日数」の2列だけで、工程の帯は条件付き書式のカスタム数式1本で出ます。日程を直せば帯もその場で動くので、Excelの図形で棒を引いていたときのような作り直しが起きません。

ガントチャートとは、作業ごとの開始日と終了日を横棒(帯)で並べて、工程の重なりと遅れを一目で分かるようにした表です。この記事では、そのまま貼って使える列設計・数式・条件付き書式のルールを載せます。Googleスプレッドシートで書いていますが、数式はエクセルでもそのまま動きます(遅れている工程名を並べる FILTER の式だけは、後述のとおりエクセルのバージョンに条件があります)。

この記事の要点

  • 帯は図形や手作業の色塗りではなく、条件付き書式のカスタム数式 =AND(H$1>=$C2, H$1<=$E2) 1本で出す
  • 手入力は「開始日」と「日数」の2列だけにする。終了日・状態・遅延は数式が出す
  • 週末の列を薄く、今日の列を1本だけ強調しておくと、開いた瞬間に「今どこ」が分かる
スプレッドシートのガントチャートのデータの流れを示した図。作業一覧の開始日と日数から終了日が数式で出て、日付ヘッダーと突き合わせた条件付き書式のカスタム数式が工程の帯を塗り、期日を過ぎた未完了の工程が赤くなることが確認できる

ガントチャートとは、工程の重なりと遅れを帯で見る表です

ガントチャートとは、作業を縦に並べ、横軸に日付を取って、各作業の期間を帯で表した工程表です。受託の制作・開発でもそのまま通用します。

受託でこれが効くのは、工程が自分の手元だけで完結しないからです。デザインが1日ずれると、コーディングの着手も1日ずれ、外注先に押さえてもらった稼働も1日ずれます。リスト形式のタスク管理だと「誰の何が何日ずれるか」が見えませんが、帯にすると重なりとずれが面で見えます。

必要な情報は、実は4つしかありません。

  • 工程の名前
  • 誰がやるか(自社か、どの外注先か)
  • いつ始めるか
  • 何日かかるか

終了日も、進行中か遅延かも、この4つから計算できます。手で入れる項目を増やさないことが、工程表が続くかどうかの分かれ目です。入力が2列で済むなら、案件が動いたときに直せます。10列あると直さなくなり、開かれない工程表になります。

シートの構成——左に作業一覧、右に日付を1日1列で並べる

1枚のシートに、左側の「作業一覧」と右側の「日付の帯」を横に並べます。列は次のとおりです。

列見出し入れ方
A工程手入力(デザイン、コーディング、実装、テスト など)
B担当・外注先手入力
C開始日手入力
D日数手入力
E終了日数式
F進捗手入力(0〜1のパーセント書式)
G状態数式
H以降日付H1に起点の日付を手入力、I1から数式

1行目はそのまま見出し行と日付行を兼ねます。A1に「工程」、B1に「担当・外注先」……と入れていき、H1から先は日付を入れます。2行目から工程が1行ずつ並びます。

終了日と状態の数式は次の2つだけです。

E2: =IF($C2="","",$C2+$D2-1)
G2: =IF($C2="","",IF($F2>=1,"完了",IF(TODAY()>$E2,"遅延",IF(TODAY()>=$C2,"進行中","未着手"))))

E2 は暦日で数えた終了日です。3日間の工程なら開始日を含めて3日目が終了日になるので、-1 を付けます。土日を飛ばして数えたい場合は後述の営業日版に差し替えてください。

G2 は上から順に判定しています。進捗が100%なら「完了」、そうでなくて終了日を過ぎていたら「遅延」、開始日を過ぎていたら「進行中」、それ以外は「未着手」です。この列を作っておくと、あとで遅延を赤くするルールが1行で書けます。E列とG列は2行目に入れたら、下へコピーしておきます。

日付ヘッダーは1セルだけ手で入れて、あとは横にコピーする

H1に表示したい期間の初日(たとえば案件の着手日の週の月曜)を入れ、I1から先は前の日に1を足すだけです。

H1: 2026-09-14   ← 手入力
I1: =H1+1        ← 右へコピー

2ヶ月分を見たいなら、I1 を BQ列あたりまで右にコピーします。日付列の幅は3〜4ピクセル相当まで狭くして、表示形式を「日」だけ(d)にすると、画面に収まる日数が増えます。月をまたぐ位置が分かりにくくなるので、条件付き書式で =DAY(H$1)=1 の列に左の太い罫線を付けておくと、月の切れ目が見えます。

ここまでで、帯を出す準備が終わりました。あとは条件付き書式です。

帯を出すのは、条件付き書式のカスタム数式1本です

Googleスプレッドシートなら「表示形式 → 条件付き書式 → カスタム数式」、エクセルなら「条件付き書式 → 新しいルール → 数式を使用して……」です。範囲を H2:BQ200 のように日付部分だけに限定してから、次の数式を入れます。

=AND($C2<>"", H$1>=$C2, H$1<=$E2)

$C2 と $E2 は列を固定して行だけ動かす、H$1 は行を固定して列だけ動かす。この組み合わせが要点です。こう書いておくと、範囲内のどのセルでも「自分の列の日付が、自分の行の開始日と終了日の間にあるか」を判定してくれます。塗りつぶしをインディゴやグレーなど薄めの色にすれば、帯の完成です。

開始日を1日動かせば、帯も1日動きます。図形で棒を引いていたときの「日程変更=作り直し」がなくなるのが、この作り方の一番の利点です。

続けて、読みやすさのためのルールを3本足します。ルールは上にあるものが優先されるので(出典:Google ドキュメント エディタ ヘルプ「Google スプレッドシートで条件付き書式ルールを使用する」、2026年10月1日確認)、この順で並べてください。

順範囲カスタム数式書式
1H2:BQ200=AND($G2="遅延", H$1>=$C2, H$1<=$E2)赤い塗りつぶし
2H2:BQ200=AND($C2<>"", H$1>=$C2, H$1<=$E2)インディゴの塗りつぶし
3H1:BQ200=H$1=TODAY()左に太い罫線、または薄い黄色
4H1:BQ200=WEEKDAY(H$1,2)>5薄いグレー

1番が2番より上にあることで、遅れている工程の帯だけが赤く出ます。3番の「今日の線」は1本だけですが、朝スプレッドシートを開いたときに目が最初に行く場所になるので、入れておく価値があります。4番の週末はいちばん下に置きます。上に置くと週末が帯を上書きしてしまいます。

遅れている工程を数字でも拾う

色が付いても、工程が30行を超えると見落とします。工程表のシート名を「工程」にしたうえで、「サマリー」シートをもう1枚作り、朝はそちらだけ開くようにします。置くのは2つの数式だけです。

=COUNTIF(工程!$G:$G,"遅延") & "件遅延 / " & COUNTIF(工程!$G:$G,"進行中") & "件進行中"
=TEXTJOIN("、",TRUE,FILTER(工程!$A:$A,工程!$G:$G="遅延"))

下の FILTER は、遅れている工程名をそのまま並べます。エクセルで使う場合、FILTER は Microsoft 365・Excel 2024・Excel 2021 で、TEXTJOIN は Excel 2019 以降と Microsoft 365 で使えます(出典:Microsoft サポート「FILTER 関数」「TEXTJOIN 関数」、2026年10月1日確認)。「3件遅延」ではなく「コーディング、テスト」と名前で出すと、その場で外注先に連絡する動きにつながります。遅れを見つけたあとの手順は、受託の工程管理——ガントチャートで納期遅れをなくす運用のコツにまとめています。

外注先ごとに帯の色を変える

誰の工程かを色で分けると、稼働の重なりが見えます。B列(担当・外注先)で分岐するルールを、外注先の数だけ足します。

=AND(H$1>=$C2, H$1<=$E2, $B2="デザインA")

ただしルールを増やしすぎないことです。3〜4社までにして、それ以上は「自社」「外注」の2色に割り切ったほうが、結局は読みやすくなります。ルールが10本を超えたあたりから、スクロールや再計算が目に見えて重くなります。

外注先ごとの稼働が重なっているかを見たいだけなら、B列でシート全体を並べ替えて、同じ外注先の行を隣り合わせにするほうが早いです。誰にいくら発注していて、いつ支払うのかまで見たい場合は、工程表とは別に発注の一覧を持つことになります(外注管理の方法——発注・納期・支払をバラバラにしない仕組みの作り方)。

土日祝を飛ばして数えたい場合

暦日で数えると、3日の工程が金曜に始まったときに日曜に終わる計算になります。営業日で数えるなら、E列を差し替えます。

E2: =IF($C2="","",WORKDAY($C2-1,$D2))
E2: =IF($C2="","",WORKDAY($C2-1,$D2,祝日!$A:$A))   ← 祝日リストがある場合

WORKDAY($C2-1, $D2) は、開始日の前日から数えて $D2 営業日後の日付を返します(出典:Microsoft サポート「WORKDAY 関数」、2026年10月1日確認)。開始日を含めて数えたいので -1 が入ります。祝日は別シートに日付を縦に並べて、第3引数で渡します。内閣府が公開している国民の祝日のCSVをそのまま貼れば、毎年の更新も貼り替えだけで済みます。

逆に「この納期に間に合わせるには、いつ始めればいいか」を出したい場合は、終了日から逆算します。

=WORKDAY($E2+1,-$D2)

印刷と共有でつまずくところ

作ったあとに必ず引っかかる3点です。

  • 見出しが流れる: 表示 → 固定 → 「1行」と「C列まで」を固定します。これをやらないと、横スクロールした瞬間に何の工程か分からなくなります
  • 印刷すると読めない: 日付列が細いまま印刷されるので、ファイル → 印刷で「幅に合わせる」を選び、印刷範囲を必要な期間だけに絞ります。3ヶ月分を1枚に入れようとしないほうがいいです
  • 共有すると壊される: クライアントや外注先に見せるなら、閲覧権限で共有するか、別シートに =IMPORTRANGE や =FILTER で必要な行だけを映したビューを作って、そちらを共有します

外注先と共有する範囲をどこまでにするかは、協力会社との情報共有のやり方で整理しています。

スプレッドシートのガントチャートが辛くなる場面

この作り方で、1案件・20工程くらいまでは十分に回ります。辛くなるのは次のような場面です。

場面何が起きるか
案件が5本以上同時に走る案件ごとにシートが分かれ、外注先の稼働が重なっているかを横断で見られなくなる
前工程がずれた後工程の開始日を1つずつ手で直すことになる(依存関係の自動調整はない)
進捗を外注先にも入れてほしい編集権限を渡すと数式や条件付き書式が壊れる
工程と発注・支払をつなげたい工程表・発注表・請求表を別々に持つことになり、同じ金額を3回入力する

上の2つは運用で吸収できます。案件をまたいだ稼働の重なりは、受託の稼働管理のやり方の考え方で、月ごとの合計工数を別シートに出せば見られます。

下の2つ、特に同じ数字を何度も入力している状態になったら、シートの作り方を工夫するより、道具を変えたほうが早いことがあります。

工程と外注費・粗利を1本につなげる仕組み

ここからは自社製品の紹介です。私たちが作っている Pipelia は、受託事業者向けのSFA/CRMで、工程のガントチャートと、そこに割り当てた外注先への発注・支払・案件別の粗利が同じデータでつながっています。工程のタスクに外注先を割り当てると、その発注額がそのまま粗利計算と支払予定に入るので、工程表と発注表に同じ金額を書く作業がありません。

Pipeliaの工程ガントチャート画面。工程ごとに外注先が割り当てられ、進捗%と納期が一覧で確認できる

デモは登録もメールアドレスも要らず、開くだけで実データ入りの画面を触れます。

よくある質問

スプレッドシートのガントチャートで土日を除いた日数は計算できますか?

できます。終了日の数式を =WORKDAY($C2-1,$D2) に差し替えると、土日を飛ばして営業日で数えた終了日が出ます。祝日も除きたい場合は、別シートに祝日の日付を縦に並べ、=WORKDAY($C2-1,$D2,祝日!$A:$A) のように第3引数で渡します。内閣府が公開している国民の祝日のCSVをそのまま貼れば、毎年の更新も貼り替えだけで済みます。

工程が増えると条件付き書式が重くなりませんか?

重くなります。原因のほとんどは範囲の取りすぎで、H:BQ のような列全体ではなく H2:BQ200 のように行も列も必要な分だけに限定すると、体感がかなり変わります。ルールの本数も効くので、外注先ごとの色分けは3〜4本までにして、それ以上は「自社」「外注」の2色に割り切ることをおすすめします。

ガントチャートと案件管理表は1枚にまとめたほうがいいですか?

分けたほうがいいです。案件管理表は1案件1行、ガントチャートは1工程1行で、行の粒度が違うためです。案件管理表の各行に工程表シートへのリンクを1列足しておけば、行き来はできます。案件管理表そのものの列設計は、案件管理のスプレッドシートテンプレートにテンプレートを載せています。