スプレッドシートで工程表を作る手順|関数で自動更新まで組む
「スプレッドシート 工程表 作り方」で調べる人の多くは、テンプレートを探すより自分で組みたいと考えています。既製のひな型は列の意味が自分の仕事と合わず、直しているうちに崩れるからです。ブラウザの表計算で工程表を組むのは、慣れれば1時間ほどの作業です。この記事では、手を動かす順番に沿って9つの手順を並べ、営業日で日付を計算する関数、遅れを自動で判定する式、印刷と共有の設定、そして組んだあとに実際に回し続けるための決めごとまでを扱います。
工程表を表計算で組むという選択が現実的な理由
工程表の道具は数多くありますが、表計算が選ばれ続けているのには理由があります。ひとつは、列の意味を自分で決められることです。専用の道具は用意された項目に仕事を合わせる必要がありますが、表計算なら仕事のほうに合わせて列を作れます。工区、施主、承認者、検査日といった、業種に固有の項目を持ち込めるのは表計算だけの強みです。
もうひとつは、他の資料と繋がることです。見積の一覧、人員の配置表、資材の発注表が同じ形式で並んでいれば、関数で参照して工程表に取り込めます。担当者が誰かを工程表に手で書き写すのではなく、配置表から自動で引いてくる形にできます。この繋げやすさは、専用の道具では代わりが利きません。
一方で、限界もはっきりしています。表計算は、1人が作って多数が見る形に最も向いています。多数が同時に書き換える形になると、事故が増えます。組み始める前に、この工程表を書き換える人が何人になるのかを数えてください。3人を超えるなら、この記事の後半で触れる保護の設定を必ず入れてください。
もうひとつ先に決めておくのは、目盛りの刻みです。多くの作業が3日以内で終わるなら日単位、それより長いものが並ぶなら週単位にします。この判断は後から変えると全部を組み直すことになるので、最初に決めてください。判断に迷ったら、進捗を確認する会議の周期に合わせるのが確実です。会議が週1回なら、日単位で作っても読み替えの手間が増えるだけです。
手順1と2 シートを分け、入力の列を決める
最初にやるのは、ファイルの中でシートを3枚に分けることです。「工程」「設定」「記録」の3枚にします。工程が本体、設定には祝日の一覧や状態の選択肢を置き、記録には完了した行を移します。1枚で全部をやろうとすると、あとで必ず散らかります。
工程シートの列は次の形にします。A列に工程番号、B列に作業名、C列に担当、D列に開始日、E列に必要日数、F列に終了日、G列に状態、H列に進捗の8列です。終了日を手で入れないのが要点で、ここは関数で出します。
作業名は動詞で終える形に揃えてください。「基礎工事」ではなく「基礎工事を終える」と書くと、終わったかどうかを本人以外も判断できます。工程表は他人が読む資料なので、読んだ人が判断できる書き方かどうかで価値が変わります。
担当は必ず1人にします。2人の名前を1つのセルに入れると、絞り込みも集計も効かなくなります。実際に2人で進める作業は、行を2つに分けてください。分けられないなら、まだ分解が足りない作業です。工程表に載せる作業の大きさは、3日から10日で終わる範囲に揃えると扱いやすくなります。
設定シートに置くものも、最初に決めておきます。祝日と休業日の一覧、状態の選択肢、担当者の一覧の3つです。担当者を一覧から選ぶ形にしておくと、表記の揺れが消えます。「山田」と「山田さん」と「山田太郎」が混ざった表では、担当者ごとの絞り込みが機能しません。人の名前は最も揺れやすい項目なので、入力規則で固定しておく価値があります。
記録シートは、完了した行の置き場です。消すのではなく移すことにしておくと、行を片づけることへの抵抗が小さくなります。あとから「あの作業はいつ終わったか」を聞かれたときにも答えられます。移すときは、完了した日付を1列足して記録しておくと、次に似た工程を組むときの見積もりの材料になります。
工程番号は、あとで並べ替えたときに元の順序へ戻せるようにするための列です。10刻みで振っておくと、途中に差し込みたくなったときに15や25を使えます。1刻みで振ると、1行差し込むたびに全部を振り直すことになります。
手順3 営業日で終了日を計算する
工程表で最も手間がかかるのは、日付の計算です。開始日から5日後が何日かを毎回数えるのは、行が増えるほど負担になります。ここは関数に任せます。
F列の終了日には「=WORKDAY(D2, E2-1, 設定!$A$2:$A$40)」のような式を入れます。WORKDAY関数は、土日と、第3引数で指定した休日を飛ばして日数を数えます。必要日数から1を引くのは、開始日そのものを1日目として数えるためです。ここを引き忘れると、1日ずつ後ろにずれた工程表ができあがります。
第3引数に指定する設定シートには、祝日の日付を縦に並べておきます。会社の休業日や、現場が動かない日もここに入れます。年が変わったらこの一覧を差し替えるだけで、工程表全体の日付が正しく計算し直されます。祝日を関数の外に置いておくことが、翌年に使い回せるかどうかを分けます。
逆に、終了日が決まっていて開始日を逆算したい場合もあります。その場合は「=WORKDAY(F2, -(E2-1), 設定!$A$2:$A$40)」で戻せます。納期から逆算して工程を組む仕事では、こちらの形のほうが実務に合います。
2つの日付の間に営業日が何日あるかを知りたい場合は、NETWORKDAYS関数を使います。「=NETWORKDAYS(D2, F2, 設定!$A$2:$A$40)」で出ます。予定の日数と実際にかかった日数を比べるときに使う式です。
日付は必ず日付の値として入れてください。文字列で「9/1」と打つと、見た目は日付でも関数が計算できません。D列にはあらかじめ日付の表示形式を設定し、データの入力規則で日付以外を弾いておくと、後の不具合がほとんど消えます。工程表が正しく描かれないという相談の大半は、この型の食い違いです。
日数の見積もりそのものについても、決め方を持っておくと後が楽です。必要日数は、作業する人が答えた日数をそのまま入れるのが基本です。進行役が縮めた数字を入れると、その工程表は最初から守れない約束になります。余裕を持たせたいなら、個々の作業を水増しするのではなく、工程のまとまりごとに調整用の行を1本置いてください。どこに余裕があるのかが見える形になり、削るときの判断もしやすくなります。
工期そのものの決め方には、業種によって公的な考え方が示されている場合もあります。建設業では、中央建設業審議会が工期に関する基準を作成し、その実施が勧告されています。
適正な工期設定を通じて長時間労働を是正するとともに、週休2日を確保することは、建設業の将来の担い手を確保する観点からも極めて重要です。 出典: mlit.go.jp
工程表の上では、これは休日を計算に含めるかどうかという形で現れます。WORKDAY関数の第3引数に休日を正しく入れているかどうかが、無理のない工期になっているかを左右します。土日を数えたまま日数を引くと、紙の上では成立していても現場では成立しない工程表ができあがります。法令や契約の解釈にわたる判断は、所管の窓口や専門家に確認してください。
手順4 目盛りの列を作る
J列から右を、日付の見出しにします。J1に工程の開始週の月曜日を入れ、K1に「=J1+7」と書いて右へ引き伸ばします。日単位なら「=J1+1」です。13列で3か月、26列で半年になります。
見出しの行数も先に決めておきます。日単位なら日付と曜日の2行、週単位なら日付だけの1行で足ります。月をまたぐ工程では、その上にもう1行足して月を表示すると読みやすくなります。ただし行を増やすほど、画面に映る作業の行数は減ります。増やすかどうかは、工程の長さで決めてください。
見出しの表示形式は「m/d」にします。列幅は24ピクセル前後まで詰めても、色の帯としては読めます。日単位で作る場合は、見出しの下にもう1行を足して曜日を出すと読みやすくなります。土日の列に薄い背景色を入れておくと、稼働しない日が視覚的に分かります。
ここを手打ちの日付にしないことが重要です。手で打った見出しは、基準日を変えたときに追随しません。半年後に「来期のぶんを作って」と言われたとき、J1の日付を1つ変えるだけで全部が動く状態にしておけば、作り直しは1分で終わります。
見出し行と左側の8列は、表示メニューから固定しておきます。右にスクロールしても、どの行を見ているかが分かる状態にするためです。固定していない工程表を右へスクロールすると、読み手は左端まで戻って行を数え、また右へ戻ることになります。この往復が、読みにくさの正体であることは少なくありません。
手順5 バーを描き、今日の位置を示す
工程表らしい見た目は、条件付き書式で作ります。図形を並べる方法もありますが、行の追加や日付の変更に追随しないので実務では使えません。
J2から表の右下までを選び、表示形式のメニューから条件付き書式を開きます。カスタム数式に「=AND($D2<=J$1+6, $F2>=J$1)」と入れて、背景色を指定します。これは「その週の範囲と作業の期間が重なっているか」を見る式です。日単位で作る場合は「+6」を外して「=AND($D2<=J$1, $F2>=J$1)」にします。
ドル記号の位置で結果が変わります。開始日と終了日の列は列だけを固定し、見出し行は行だけを固定します。塗る位置が右へ行くほどずれるときは、まずここを疑ってください。
続いて、今日を示すルールを足します。同じ範囲に対して「=AND(J$1<=TODAY(), J$1+6>=TODAY())」と入れ、薄い色か罫線を指定します。週単位なら、今日を含む週の列だけに色が付きます。この位置より左にあって完了していない行が遅れです。読み方が1つに決まると、会議で説明する手間が大きく減ります。
さらに、遅れている行そのものを目立たせるルールも足せます。B列からH列までを範囲にして「=AND($F2<TODAY(), $G2<>"完了")」と入れ、文字色を変えます。終了日を過ぎているのに完了になっていない行だけが変わる式です。ただし、色だけで伝えるのは避けてください。色の見え方には個人差があるため、I列に「=IF(AND($F2<TODAY(), $G2<>"完了"), "遅", "")」のような式を置いて、文字でも分かるようにしておくと確実です。
条件付き書式の範囲は、実際に使う行数と列数ぶんだけに絞ります。列をまるごと指定すると、使っていないセルまで計算対象になり、開くたびに待たされる表になります。組み終わったあとで表が重いと感じたら、まずここを見直してください。
手順6 状態と進捗を、選ぶだけで済むようにする
G列の状態には、データの入力規則でプルダウンを設定します。選択肢は設定シートに「未着手」「進行中」「完了」「保留」と縦に並べ、入力規則の範囲としてそこを指定します。直接入力の一覧にせず、シートを参照する形にしておくと、あとで選択肢を足したいときに1行加えるだけで済みます。
自由入力にすると、表記が必ず揺れます。「対応中」「作業中」「着手済」が混ざった表では、絞り込みも集計も効きません。選択肢を4つに絞ることは、見た目の統一ではなく、集計を成立させるための条件です。
H列の進捗は、手で数字を入れる形にしないほうが続きます。「=IF($G2="完了", 1, IF($G2="未着手", 0, ""))」のようにして、完了と未着手だけ自動で埋め、進行中の行だけ手で入れる形にすると、入力の負担が大きく減ります。パーセントを毎回考えて入れる形は、2週間ほどで誰も入れなくなります。
全体の進み具合を1つの数字で見たいなら、表の上部に「=AVERAGE(H2:H100)」を置きます。行ごとの重みを揃えたくない場合は、必要日数で重み付けした「=SUMPRODUCT(E2:E100, H2:H100)/SUM(E2:E100)」のほうが実態に近くなります。1日で終わる作業と1か月かかる作業が同じ重さで平均されると、数字が現実から離れます。
手順7 印刷と共有の設定を先に済ませる
組み終わったあと、配る形を決めます。ここを後回しにすると、会議の直前に慌てることになります。
印刷する場合は、用紙を横向きにして、印刷設定で幅を1ページに収める指定にします。工程表は横に長い表なので、縦向きのままだと右半分が2枚目に流れます。2枚に割れた工程表は、貼り出しても読まれません。あわせて、繰り返す行として見出し行を、繰り返す列として左の8列を指定しておきます。
紙で配るなら、色の濃さも確かめてください。画面でちょうどよく見えるバーが、印刷すると背景と見分けられないことがあります。白黒で印刷してバーが判別できるかどうかを、配る前に一度試しておくと安心です。
画面で共有する場合は、共有の範囲を必ず確かめてください。リンクを知っている全員が編集できる設定にしていると、転送された先で誰でも書き換えられます。工程表には取引先の名前や納期が入ることが多いので、閲覧のみのリンクと編集できるリンクを分けて配るのが基本です。
Googleドライブの上限は公式のヘルプに書かれています。
Google スプレッドシートで作成したスプレッドシートまたは Google スプレッドシート形式に変換したスプレッドシートの場合は 1,000 万セルまたは 18,278 列(列 ZZZ)まで。 出典: support.google.com
工程表がこの数字に届くことは、まずありません。実務で先に困るのは行数の多さで、100行を超えると今週の話にたどり着くまでにスクロールが必要になります。完了した行を記録シートへ移す作業を月に1回入れると、この問題は解消します。手順1でシートを3枚に分けたのは、このためです。
手順8と9 保護をかけ、運用のルールを表に書く
複数人で触る前提なら、保護の設定を入れます。範囲を細かく分けるほど管理が面倒になるので、守るのは2か所だけにしてください。日付の見出し行と、関数が入っている列です。
見出し行を守るのは、誰かが右端に手で日付を打ち込むと、そこから先の計算が途切れるからです。途切れたことは見た目では分かりません。翌年に基準日を変えたとき、途切れた位置から先だけが古い日付のまま残って初めて気づきます。
関数の列を守るのは、計算結果のセルに手で数字を打ち込まれると式が消えるからです。見た目は同じ数字なので、これも気づけません。守れない場合は、せめて背景色を薄く付けて、触らない列だと分かるようにしてください。
最後に、運用のルールを表の中に書きます。別の資料に書いたルールは読まれません。工程シートの上部に、次の4行を書いておくだけで事故が減ります。
・行を足すときは、既存の行を複製してから中身を書き換える ・他のシートから貼り付けるときは、値のみ貼り付けを使う ・並べ替えではなくフィルタ表示を使う ・完了した行は、月末に記録シートへ移す
行の複製を求めるのは、新しく挿入した行に条件付き書式がかからないためです。並べ替えを避けるのは、共同編集中に順序が変わると、他の人が編集中のセルが動いて、意図しない行を書き換える事故が起きるためです。フィルタ表示なら自分の画面だけで絞り込めるので、他の人に影響しません。
組んだあと、1週間をどう回すか
工程表は作った瞬間が最も正確で、そこから毎日ずれていきます。ずれを戻す流れを決めておかないと、2週間ほどで実態と合わなくなります。現場では、更新できる人が1人だけの表はこの速さで嘘になると言われています。
週の流れとして決めておくのは3つです。誰が、いつ、何を更新するか。この3つが決まっていれば、道具が何であっても表は生き残ります。決まっていなければ、どんな道具でも古くなります。
現実的な形は次のようなものです。担当者は作業が終わった時点でG列の状態を完了に変える。進行役は会議の前日に表を開き、終了日を過ぎて完了になっていない行を確認する。会議では、その行だけを議題にする。会議のあとで、動いた予定の日付を直す。この4つが回れば、工程表は使い続けられます。
会議の議題を「遅れている行だけ」に絞るのが要点です。全部の行を上から読み上げる会議は、時間がかかるうえに更新の動機を生みません。遅れている行だけを扱うと決めておけば、担当者は自分の行を完了に変える理由が生まれます。変えなければ会議で名前が挙がるからです。動機を作るのは道具ではなく、この決め方です。
日付を直すときは、後続の作業も一緒に動かす必要があります。手順3で終了日を関数にしてあるので、必要日数を変えれば終了日は自動で動きます。ただし、後続の作業の開始日までは動きません。前の作業の終了日を参照する形にしたい場合は、D列に「=WORKDAY(F2, 1, 設定!$A$2:$A$40)」のように前の行の終了日の翌営業日を入れます。ただし、この形にすると1行の遅れが全体に波及するため、途中に余裕を置きたい工程では向きません。どこを自動で連動させ、どこを手で決めるかは、工程の性質に合わせて選んでください。
手順の途中でつまずきやすい3か所
組んでいる最中に手が止まりやすい箇所を挙げておきます。いずれも原因がはっきりしているので、知っていれば数分で抜けられます。
1つ目は、WORKDAY関数の結果が数字で出る場合です。関数は日付のシリアル値を返すので、セルの表示形式が標準のままだと45900のような数字が並びます。F列の表示形式を日付に変えるだけで直ります。関数が間違っているわけではありません。
2つ目は、条件付き書式が1行目にしかかからない場合です。範囲を選ぶときにJ2から選び始めているか、数式の中で行番号を2にしているかを確かめてください。範囲の左上のセルの行番号と、数式の中の行番号が一致していないと、1行ずつずれた場所が塗られます。範囲をJ2から取ったなら、数式は$D2と$F2で書きます。
3つ目は、表が重くなる場合です。条件付き書式のルールを追加していくと、範囲が重なったルールが積み上がります。表示形式のメニューから条件付き書式を開くと、そのシートに設定されているルールの一覧が出ます。使っていないルールや、範囲が広すぎるルールを消すだけで、たいていは元の速さに戻ります。組み終わったら、一度この一覧を確認する習慣をつけてください。
表計算で回し続けられるかどうかの分かれ目
ここまでの手順で組んだ工程表は、実務で十分に使えます。道具を変えなくても、工程表としてはかなりの水準に達します。実際、書き換える人が1人で他は見るだけという体制なら、表計算のままで困ることはあまりありません。
続かなくなるのは、次の3つのどれかが起きたときです。
ひとつは、書き換える人を増やしたくなったときです。セルを複数人が同時に触る運用は、事故が起きやすい構造をしています。特にスマートフォンから触ってもらう場合、セルの当たり判定が小さく、隣の行を書き換える事故が頻発します。
もうひとつは、更新が誰にも届かないときです。表計算には、変更を知らせる仕組みが標準では備わっていません。誰かが状態を変えても、表を開いていない人には伝わりません。3日前に完了していた作業に気づかず催促してしまうと、更新した側は押した意味が無かったと感じます。届かない更新は続きません。
3つ目は、案件が増えたときです。案件ごとにファイルを作ると、全体を横断して見る手段が無くなります。関数で束ねる方法もありますが、ファイルが増えるほど壊れやすくなります。機能で絞らず、区切るのは人数とボードの数だけという決め方の道具であれば、案件ごとにボードを分けても使える機能は同じです。プランの区切り方は料金のページで、工程表として何ができるのかはできることのページで確認できます。
正直に書いておくべき制約もあります。画面は日本語のみで、自動化や外部サービスとの連携では勝負していません。表計算の強みだった「他の資料と関数で繋がる」という点は、専用の道具では失われます。見積や配置表と自動で繋げたい要件が強いなら、表計算を続ける判断のほうが合理的です。
移すかどうかを考えるときの比較の観点
比較のページを横に並べて読むと、道具ごとの違いは機能の数ではなく、書き換える人を増やせるかどうかに集まっていることが分かります。カードを動かす形、担当ごとにビューを切り替える形、通知で更新を促す形と方向はさまざまですが、狙っている場所は同じです。
カンバン形式でカードを動かす道具との違いはTrelloとの比較に、作業の割り当てを軸にした道具との違いはAsanaとの比較に、多機能なワークスペース型との違いはNotionとの比較に、案件を横断して進捗を見る形の道具との違いはmonday.comとの比較に整理されています。観点ごとに並べた比較の一覧から、いま使っている道具の名前で探すのが早いです。
国内で広く使われている課題管理型との違いはBacklogとの比較にまとめられています。なおBacklogは、2026年12月31日をもって現行プランの新規契約が終了し、2027年1月1日からエコノミー、ビジネス、プロフェッショナルの3プランに変わることが公式に告知されています。フリープランのユーザー上限も10名から5名に減ります。新規に検討している場合は、切り替わりの時期を踏まえて確認してください。
サービスの終了予定も現実の判断材料です。カンバン方式のタスク管理ツールであるJootoは、公式サイトで2027年7月31日をもって一般提供を終了すること、2027年8月1日以降はデータを順次すべて削除する予定であることを告知しています。移行先を探している人向けのJootoとの比較も用意されています。
移すと決めた場合、自動で取り込めるのはTrelloからのデータだけで、それ以外は手作業になります。ただし、この記事の手順で組んだ工程表は1行1作業の形になっているので、CSVに書き出して貼り付ける作業が中心になります。列の順番を固定し、状態の値を4つに限定してあることが、そのまま移行の準備になっています。手順はTrelloからの移行のページに書かれています。社外の場所にデータを置く以上、社内で安全性の説明を求められることもあります。何をどう守っているかは安全性の考え方に、導入前によく出る質問はよくある質問にまとまっているので、説明の材料として先に目を通しておくと話が早く進みます。
Q1. 終了日を手で入れずに計算するには、どの関数を使いますか?
WORKDAY関数を使います。開始日のセルと必要日数から1を引いた値、そして祝日の一覧を範囲で指定すると、土日と休日を飛ばした終了日が出ます。祝日は設定用のシートに縦に並べて参照する形にしておくと、年が変わったときに一覧を差し替えるだけで済みます。
Q2. バーが正しい位置に塗られないときは、どこを見ればよいですか?
条件付き書式のカスタム数式で、ドル記号の位置を確かめてください。開始日と終了日の列は列だけを固定し、日付の見出し行は行だけを固定します。それでも直らない場合は、開始日や終了日が日付ではなく文字列として入っている可能性が高いです。
Q3. 進捗のパーセントは、毎回手で入れるべきですか?
入れないほうが続きます。完了なら100パーセント、未着手なら0パーセントを式で自動的に埋め、進行中の行だけ手で入れる形にしてください。全体の進み具合を出すときは、単純な平均ではなく必要日数で重み付けすると実態に近い数字になります。
Q4. 複数人で編集する場合、最低限どこを保護すればよいですか?
日付の見出し行と、関数が入っている列の2か所だけで足ります。それ以外を全員が触れる状態にしておくほうが運用は続きます。あわせて、行の追加は既存行の複製で行うこと、貼り付けは値のみ貼り付けを使うことを、表の上部にルールとして書いておいてください。