業務改善 · 公開 · 11分で読める
最終更新
プロジェクト原価管理をエクセルで行う方法|工数と外注費を案件別に予実で見る表の作り方
プロジェクト原価管理をエクセルで行うときの結論
プロジェクト原価管理は、エクセルでも十分に回せます。崩れる原因は関数の難しさではなく、工数に案件番号が付いていない、時間単価が決まっていない、実績だけを見て「まだ予算内」と判断してしまう、の3点がほとんどです。この記事では、この3点を先に決めた表の作り方を、計算例と一緒に説明します。
- 原価に入れる費目は、社内の人件費(工数×時間単価)、外注費、直接経費の3つから始め、共通費は案件に配りません。
- ファイルは案件マスタ・工数入力・外注経費入力・集計の4シートに分け、どの行にも案件番号を付けます。
- 粗利は実績の累計ではなく、実績に残作業の見込みを足した「着地見込み」で予算と比べます。
受託制作、システム開発、設計事務所、コンサルティング、イベント運営など、案件ごとにチームを組んで納品する会社では、原価の大半が社内の人の時間です。材料の仕入れ値は請求書を見れば分かりますが、人の時間は記録しない限りどこにも残りません。案件が終わって請求したあと、「この案件は結局もうかったのか」に答えられない会社が多いのはこのためです。
材料費や工程ごとの加工費が中心になる製造業・物件ごとの費用を積む不動産の原価管理は原価管理をエクセルで回し切る現場の型で扱っています。粗利をどの単位で見るか(顧客・案件・商品・部門)から整理したい場合は利益が残らない会社の数字管理が先です。この記事は、人の時間が主な原価になるプロジェクト型の会社に絞ります。
プロジェクト原価管理は、案件ごとに予算・実績・着地見込みを1行で見る管理です
プロジェクト原価管理でやることは、受注した案件ごとに「いくらかかる予定だったか(予算)」「いままでにいくらかかったか(実績)」「最後にいくらで終わりそうか(着地見込み)」を並べ、粗利が予定どおり残るかを途中で判断することです。終わった案件の振り返りだけでは、手を打てるタイミングを逃します。
判断に使うのは次の3つの問いです。いま進んでいる案件のうち粗利が予算を下回りそうなのはどれか、その原因は社内工数か外注か、追加費用を顧客に相談すべき変更が入っていないか。表はこの3つに答えられれば足ります。
原価に入れる費目は、人件費・外注費・直接経費の3つから始めます
最初から全社の費用を案件に配ろうとすると、配り方の議論で止まります。まずは「その案件がなければ発生しなかった費用」だけを原価に入れます。
| 費目 | 中身 | 記録のしかた |
|---|---|---|
| 社内の人件費 | 工数(時間)×時間単価 | 工数入力シートに、日付・担当・案件番号・時間を1行ずつ記録します |
| 外注費 | 協力会社・フリーランスへの発注額 | 発注書または請求書の単位で、案件番号を付けて記録します |
| 直接経費 | その案件のためだけに使った交通費・ライセンス・素材代など | 経費精算の時点で案件番号を付けます |
| 共通費 | 家賃・管理部門の人件費・全社で使うツール代 | 最初は案件に配らず、粗利の下でまとめて引きます |
共通費を案件に配らないのは、手を抜くためではありません。案件の担当者が自分で動かせない費用を混ぜると、粗利が悪いときに原因が見えなくなるからです。共通費は「案件の粗利の合計で、共通費をまかなえているか」として月次で見ます。配り方を決めるのは、案件別の粗利が半年ほど安定して出るようになってからで遅くありません。
時間単価は職種別に1つ決め、年1回見直します
社内の人件費は「工数×時間単価」で出します。時間単価は、その職種の人に会社が1年間に払う金額を、年間の所定労働時間で割って出すのが分かりやすい方法です。
- 計算式:時間単価=(給与+賞与+会社負担の社会保険料)÷ 年間の所定労働時間
- 計算例:年間の支払いが760万円、所定労働時間が1日8時間×年240日=1,920時間なら、760万円÷1,920時間≒3,958円で、丸めて4,000円
所定労働時間で割ると、会議や社内業務など案件に付かない時間の分は案件原価に乗りません。その時間は工数入力で「案件外」として記録し、案件外が全体の何割あるかを別に見ます。案件外の割合が高いのに案件の粗利だけ良く見える、というずれに気付けるようにするためです。
単価は個人別ではなく、職種や等級ごとの平均で置きます。個人別にすると、工数を入力する全員に給与が見えてしまうからです。
エクセルは案件マスタ・工数入力・外注経費入力・集計の4シートに分けます
1枚のシートに案件ごとの列を足していく作り方は、案件が10本を超えたあたりで横に長くなり、誰も全体を見なくなります。入力する場所と集計する場所を分け、入力は縦に1行ずつ足していく形にします。
| シート | 持つ列 | ルール |
|---|---|---|
| 案件マスタ | 案件番号、案件名、顧客、受注額、予算工数、予算外注費、予算経費、責任者、状態、残作業見込み(時間)、残外注見込み、残経費見込み | 1案件1行。案件番号はここでしか採番しません。残作業・残外注・残経費の3列だけは、責任者が週次で書き換えます |
| 工数入力 | 日付、担当者、職種、案件番号、作業内容、時間 | 1人1日1案件で1行。案件外の時間も「案件外」で記録します |
| 外注経費入力 | 日付、区分(外注/経費)、案件番号、取引先、金額、確定/見込み | 発注した時点で「見込み」、請求書が届いたら「確定」に変えます |
| 集計 | 案件番号ごとの受注額・実績累計・残作業見込み・着地見込み原価・粗利見込み | 入力はしません。実績は入力シートから、残作業見込みは案件マスタから関数で引きます |
入力シートの案件番号の列は、データの入力規則でリストを案件マスタの案件番号に限定します。手で番号を打つと、全角と半角の違いやハイフンの抜けで集計から漏れるためです。終わった案件は案件マスタの状態を「完了」にしますが、それだけでは入力規則のリストから消えません。リストの元の値には、案件マスタ全体ではなく、状態が「進行中」の案件番号だけを並べた範囲を指定します。Microsoft 365やExcel 2021以降なら、別のシート(例:リスト用)のA2セルに =FILTER(案件マスタ!A2:A500, 案件マスタ!I2:I500="進行中") を置き、入力規則の元の値を =リスト用!$A$2# にします(I列=状態、#は関数の結果が広がった範囲全体を指します)。FILTERが使えない版では、案件マスタを状態で並べ替え、進行中の行だけを範囲として指定し直します。
集計はSUMIFSとXLOOKUPの2つで足ります
工数入力シートで、各行の人件費を出します。職種の列から単価表を引き、時間に掛けます。
人件費(工数入力シートのG列)
=F2*XLOOKUP(C2, 単価表!A:A, 単価表!B:B)
C列=職種、F列=時間、単価表A列=職種、B列=時間単価集計シートでは、案件番号ごとに工数・人件費・外注費・経費を合計します。外注と経費は「区分」で条件を足します。
実績工数 =SUMIFS(工数入力!F:F, 工数入力!D:D, A2)
実績人件費 =SUMIFS(工数入力!G:G, 工数入力!D:D, A2)
外注費 =SUMIFS(外注経費入力!E:E, 外注経費入力!C:C, A2, 外注経費入力!B:B, "外注")
経費 =SUMIFS(外注経費入力!E:E, 外注経費入力!C:C, A2, 外注経費入力!B:B, "経費")
A2=集計シートの案件番号、工数入力D列・外注経費入力C列=案件番号着地見込みと粗利見込みは、実績に案件マスタの残りの見込みを足して出します。集計シートの列を次のように置いた場合の数式です。外注経費入力に「見込み」で入れた発注分は外注費の合計にすでに入っているので、残外注見込みにはまだ発注していない分だけを書きます。
B列 受注額 =XLOOKUP(A2, 案件マスタ!A:A, 案件マスタ!D:D)
C列 実績人件費 =SUMIFS(工数入力!G:G, 工数入力!D:D, A2)
D列 外注費 =SUMIFS(外注経費入力!E:E, 外注経費入力!C:C, A2, 外注経費入力!B:B, "外注")
E列 経費 =SUMIFS(外注経費入力!E:E, 外注経費入力!C:C, A2, 外注経費入力!B:B, "経費")
F列 残作業時間 =XLOOKUP(A2, 案件マスタ!A:A, 案件マスタ!J:J)
G列 残外注見込み =XLOOKUP(A2, 案件マスタ!A:A, 案件マスタ!K:K)
H列 残経費見込み =XLOOKUP(A2, 案件マスタ!A:A, 案件マスタ!L:L)
I列 着地見込み原価 =C2+F2*単価表!$B$2+D2+G2+E2+H2
J列 粗利見込み =B2-I2
案件マスタ D列=受注額、J〜L列=残作業見込み(時間)・残外注見込み・残経費見込み
単価表!$B$2=残作業に掛ける時間単価(職種が混ざる案件は、職種ごとに残作業時間の列を分けます)SUMIFSは複数の条件に合う行だけを合計する関数で、XLOOKUPは表から値を探して返す関数です。XLOOKUPはMicrosoft 365やExcel 2021以降で使えます。古い版ではVLOOKUPで置き換えてください。出典:Microsoft サポート「SUMIFS 関数」/出典:Microsoft サポート「XLOOKUP 関数」
粗利は実績の累計ではなく、着地見込みで予算と比べます
プロジェクト原価管理で一番多い見誤りは、実績の累計が予算より少ないことを見て「まだ予算内」と判断することです。進行中の案件では、残りの作業にかかる費用がまだ実績に入っていません。比べるべきは、実績に残作業の見込みを足した着地見込みです。
受注額200万円のWeb制作案件を例に、中間時点の表を作ると次のようになります。数字は説明用の架空の例です。
| 項目 | 予算 | 実績の累計 | 残作業の見込み | 着地見込み |
|---|---|---|---|---|
| 社内工数 | 240時間 | 180時間 | 100時間 | 280時間 |
| 社内人件費(時間単価4,000円) | 960,000円 | 720,000円 | 400,000円 | 1,120,000円 |
| 外注費 | 400,000円 | 400,000円 | 0円 | 400,000円 |
| 直接経費 | 40,000円 | 25,000円 | 15,000円 | 40,000円 |
| 原価合計 | 1,400,000円 | 1,145,000円 | 415,000円 | 1,560,000円 |
| 粗利(受注額2,000,000円) | 600,000円(30%) | — | — | 440,000円(22%) |
受注額200万円・予算原価140万円の案件で、中間時点の実績累計が114.5万円だとします。ここに残りの社内作業100時間(時間単価4,000円で40万円)と残りの経費1.5万円を足すと、着地見込みは156万円です。粗利は予定の60万円(30%)から44万円(22%)に下がります。実績だけを見ると予算内でも、着地見込みで比べると予算を16万円超えています。社内工数が予算の240時間に対して280時間で終わりそうだ、というのがこの表から読める原因です。
残作業の見込みは、担当者に週次で聞いて書き込みます
担当者に「あと何時間で終わるか」を聞き、責任者が案件マスタの残作業見込み(時間)の列を書き換えます。まだ発注していない外注や、これから出る経費があれば、残外注見込み・残経費見込みの列も同じときに直します。精密である必要はありません。毎週更新されていれば、見込みが週を追って膨らんでいく案件が分かります。外注費は発注した時点で「見込み」として入れておくと、請求書が届くまで原価に出てこないという遅れを防げます。
着地が予算を超えそうな案件では、その差が顧客からの追加要望によるものかを確かめます。当初の範囲にない作業なら、変更として見積もり直す相談の材料になります。見積もりと実績の差を次の見積もりに戻す方法は見積と実績の差異を原価と突き合わせる手順で、受注したのにまだ請求していない明細の追い方は受注残の管理方法で扱っています。
エクセルで崩れるのは、入力の締めと案件番号の付け忘れです
表の作りより、運用の決めごとで差が出ます。最低限、次の4つを決めて表の1枚目に書いておきます。
- 締め日:工数は毎週金曜までに前週分を入力し、月曜に責任者が案件別の合計を確認します。
- 案件番号:受注が決まった時点で案件マスタに登録し、番号のない作業は「案件外」で入力します。
- 見込みの更新:案件マスタの残作業見込み(時間)・残外注見込み・残経費見込みは、案件の責任者が週次で書き換えます。
- 単価の見直し:時間単価は昇給の時期に年1回見直し、変更日を単価表に残します。
ファイルは共有フォルダやクラウドストレージに1つだけ置き、個人のパソコンにコピーして編集しないようにします。同時に何人も入力する状況になったら、工数入力だけをGoogleフォームなどの入力画面に切り出し、エクセル側は集計に専念させる方法もあります。
同じファイルの同時編集で衝突が続く、案件番号の付け忘れを毎月手で直している、請求や会計の数字と毎回突き合わせ直している、のどれかが当たり前になったら、仕組みを移す時期です。判断の目安はExcelからシステムへ移すタイミングに、kintoneで案件別の原価を積む場合の構成はkintone 原価管理|案件別の集計をどこまで載せられるかにまとめています。エクセルで費目・案件番号・締め日のルールを固めておけば、それがそのまま移行先の要件になります。
効果は「着地見込みと最終実績の差」で測ります
表を作った効果は、案件が終わったときに確かめます。各案件の終了時に、途中の時点で出していた着地見込みと、最終的な原価の差を記録してください。始めたばかりの頃は差が大きく、週次の更新が回り始めると差が縮んでいきます。差が縮まないなら、残作業の見込みの書き方か、工数入力の遅れを見直します。
もう1つは、工数入力の締めに間に合った人の割合です。入力が欠けた週があると、その案件の実績は少なく見え、着地見込みも甘くなります。粗利の数字そのものより先に、この2つが安定しているかを月次で確認します。
来週は、進行中の案件1本で予算と着地見込みを並べます
全案件を一度に載せる必要はありません。進行中の案件から1本を選び、受注額と予算工数・予算外注費を案件マスタに書きます。担当者に過去2週間の作業時間を案件番号付きで思い出してもらい、残りの作業に何時間かかりそうかを聞きます。それだけで、予算・実績・着地見込みの3列が埋まります。
1本で着地見込みが予算とずれていたら、それが表を広げる理由になります。ずれていなければ、次は粗利が一番心配な案件を載せてください。顧客ごとに採算をまとめて見たい場合は顧客別採算の計算方法が次の一歩になります。
NEXT STEP
案件別の粗利が見える表を一緒に整理する
いまの工数の記録や案件一覧を見ながら、原価に入れる費目、時間単価、案件番号の付け方、週次の締め方を無料相談で整理します。
無料相談を申し込むプロジェクト原価管理でよくある質問
プロジェクト原価管理と、製造業の原価管理は何が違いますか?
製造業では材料費や工程ごとの加工費が中心になりますが、受託制作・システム開発・設計・コンサルなどのプロジェクトでは、社内の人の時間が原価の大半を占めます。そのため、工数を案件番号付きで記録し、時間単価を掛けて人件費に直す仕組みが管理の中心になります。
時間単価は社員一人ひとりの給与から計算すべきですか?
最初は職種や等級ごとの平均単価で十分です。個人別の単価を表に置くと、工数を入力する人全員に給与が見えてしまいます。職種別の単価を年1回、または昇給の時期に見直す運用にすると、精度と扱いやすさの釣り合いが取れます。
工数の入力が遅れて、月末にまとめて思い出しで書かれてしまいます。
月末締めをやめて週次で締め、毎週決まった曜日に案件ごとの合計を責任者が確認する形にします。入力の粒度も最初は30分単位など粗くして構いません。正確な分単位の記録より、毎週欠けずに入っていることのほうが着地見込みの精度に効きます。
エクセルからシステムに移すのはいつがよいですか?
同じファイルを複数人が同時に編集して衝突する、案件番号の付け忘れを毎月手で直している、請求や会計の数字と毎回突き合わせ直している、のどれかが続くようになったら検討の時期です。先にエクセルで費目・案件番号・締め日のルールを固めておくと、移行先を選ぶときの要件がそのまま決まります。
泉 款太(いずみ かんた)
株式会社SalesDock 代表取締役
慶應義塾大学法学部卒。スタートアップ、ラクスル、リクルート(SUUMO)を経て2025年に独立。 中小企業の経営・営業・業務・データをつなぐ事業基盤の設計と実装を支援。 不動産・製造業・クリニックを中心に、累計40社以上の支援に携わる。
運営は株式会社SalesDock(大阪市中央区本町)。中小企業向けに、AI自走プラン(初期構築15万円+月額10万円・90日)と、 そのあとのAI顧問(月額5万円・6ヶ月契約から)を提供しています。価格は税別です。 大阪・関西を中心に、オンラインで全国からのご相談に対応しています。
代表者情報を読む →この記事の数値について
本文中に一次資料へのリンクがある数値は、リンク先を出典としています。 リンクのない業務設計、判断基準、実務上の目安は、SalesDockが累計40社以上の支援と自社運用で得た知見を一般化したものです。 個別企業での成果を保証する数値ではなく、条件によって変わります。