- マネジメント
工数管理のやり方|Excel入力表と集計数式・予定比較のテンプレート
工数管理とは、誰が・どの案件の・どんな作業に・何時間使ったかを記録し、予定と比べて次の計画に生かす取り組みです。 Excelで行う場合は、入力する表と集計する表を分けるだけで、数式は数種類で足ります。
この記事では、表計算ソフトにそのまま貼れる2週間分の入力データ、作業分類コード一覧、予定工数表を載せ、集計の数式とその計算結果を並べて示します。見積もりや人月の換算には触れず、使った時間の記録と集計に絞って説明します。
確認環境:LibreOffice Calc 24.2.7.2(ヘッドレス実行で数式を再計算)、Python 3.11(標準ライブラリのみで検算)、Linux。確認日は2026-10-06です。記事中の計算結果は、Excelと共通の関数だけで組んだ数式をLibreOffice Calcで計算した値です。SUMIFSの構文はMicrosoftサポートのページで確認しています。
この記事の結論
- 入力は「日付・担当・案件・作業分類・時間」の5列を、1行1作業で記録する
- 集計は入力シートに書き込まず、別シートのSUMIFSに任せる(入力する人は数式に触れない)
- 作業分類は5〜7個のコードにし、「手戻り」と「問い合わせ対応」を独立させる
- 予定との比較は「差=実際の時間−予定時間」「消化率=実際の時間÷予定時間」の2つで見る
- 毎週、担当×日付の合計が所定時間と合うかを式で確かめ、入力漏れを先に直してから集計を読む
工数管理シートの早見表
| シート | 役割 | 主な列 | 中心になる式 |
|---|---|---|---|
| 入力 | 1行1作業で記録する | 日付・担当・案件・作業分類・時間 | なし(値だけ) |
| 分類 | 作業分類コードの一覧 | コード・名称・含める作業 | なし(値だけ) |
| 予定 | 案件×分類の予定と比較 | 予定時間・実際の時間・差・消化率 | =SUMIFS(入力!$E:$E,入力!$C:$C,A2,入力!$D:$D,B2) |
| 案件別 | 案件ごとの合計 | 案件・時間・割合 | =SUMIFS(入力!$E:$E,入力!$C:$C,A2) |
| 分類別 | 分類ごとの合計と検算 | コード・名称・時間・割合 | =SUMIFS(入力!$E:$E,入力!$D:$D,A2) |
| 週別 | 週×案件の合計 | 週の開始日・案件ごとの時間 | =SUMIFS(入力!$E:$E,入力!$A:$A,">="&$A2,入力!$A:$A,"<"&$A2+7,入力!$C:$C,B$1) |
| 漏れ | 担当×日付の合計と判定 | 日付・担当ごとの時間・判定 | =IF(B2=0,"未入力",IF(B2<>8,"要確認","")) |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「工数管理のやり方|Excel入力表と集計数式・予定比較のテンプレート」
工数管理・勤怠管理・進捗管理の違い
3つは同じ「時間」を扱いますが、答える問いが違います。工数管理は「何に使ったか」、勤怠管理は「いつ働いたか」、進捗管理は「どこまで終わったか」です。
| 項目 | 工数管理 | 勤怠管理 | 進捗管理 |
|---|---|---|---|
| 答える問い | 何の作業に何時間使ったか | いつからいつまで働いたか | 作業がどこまで終わったか |
| 記録の単位 | 案件・作業分類ごとの時間 | 1日の始業・終業・休憩 | タスクの状態や完了した量 |
| 主な使い道 | 予定との比較、次の見積もりの材料 | 労働時間の把握 | 期日に間に合うかの判断 |
| 合計の意味 | 案件や分類に使った時間 | その日に働いた時間 | 合計はとらない(割合で見る) |
| 互いの関係 | 1日の合計は勤怠の労働時間と合う | 工数の入力漏れを見つける基準になる | 消化率と並べると進み具合の差が見える |
| こういうとき | 見るもの |
|---|---|
| 予定より時間がかかった作業を知りたい | 工数管理(案件×分類の差) |
| 1日の入力が足りているか確かめたい | 勤怠の労働時間と工数の日別合計を突き合わせる |
| 期日に間に合うか知りたい | 進捗管理(完了した量)と工数の消化率を並べる |
| 次の見積もりの根拠がほしい | 工数管理の分類別の割合 |
入力シートの作り方:5列・1行1作業
入力シートに置くのは次の5列だけです。1つの作業を1行に書き、同じ日に3つの作業をしたら3行にします。
| 列 | 項目 | 入力のしかた | 例 |
|---|---|---|---|
| A | 日付 | 日付として入力する(文字列にしない) | 2026-06-01 |
| B | 担当 | リストから選ぶ | 佐藤 |
| C | 案件 | リストから選ぶ。案件に属さない作業は「共通」 | 備品予約 |
| D | 作業分類 | 分類シートのコードから選ぶ | DEV |
| E | 時間 | 時間単位の数値。30分は0.5 | 5.5 |
入力のルールは3つに絞ると続けやすくなります。
- その日のうちに入力する(翌日以降にまとめると、短い作業が抜けやすくなります)
- 1日の合計を所定時間(この例では8時間)に合わせる
- 案件と作業分類はリストから選ぶ(手で打つと表記がゆれ、集計から漏れます)
2週間分の入力データ(タブ区切り)
架空の開発チーム3人(佐藤・鈴木・高橋)が、社内の備品予約システムと図書貸出システムを担当している想定の、2026-06-01〜2026-06-12(平日10日)の記録です。下のブロックをコピーし、新しいブックの「入力」シートのA1に貼り付けてください。ヘッダーを含めて80行です。
説明のため、わざと3か所に入力の抜けを入れてあります(未入力の日、合計が足りない日、分類コードの打ち間違い)。後半の検出式で見つけます。
日付 担当 案件 作業分類 時間
2026-06-01 佐藤 備品予約 DEV 6
2026-06-01 佐藤 共通 MTG 1
2026-06-01 佐藤 備品予約 REV 1
2026-06-01 鈴木 図書貸出 DEV 5
2026-06-01 鈴木 備品予約 REV 2
2026-06-01 鈴木 共通 MTG 1
2026-06-01 高橋 備品予約 DEV 4
2026-06-01 高橋 図書貸出 SUP 3
2026-06-01 高橋 共通 MTG 1
2026-06-02 佐藤 備品予約 DEV 7
2026-06-02 佐藤 備品予約 SUP 1
2026-06-02 鈴木 図書貸出 DEV 6.5
2026-06-02 鈴木 図書貸出 SUP 1.5
2026-06-02 高橋 備品予約 DEV 5
2026-06-02 高橋 図書貸出 SUP 2
2026-06-02 高橋 図書貸出 REV 1
2026-06-03 佐藤 備品予約 DEV 5.5
2026-06-03 佐藤 備品予約 RWK 1.5
2026-06-03 佐藤 共通 MTG 1
2026-06-03 鈴木 図書貸出 DEV 6
2026-06-03 鈴木 共通 MTG 1
2026-06-03 鈴木 図書貸出 REV 1
2026-06-03 高橋 備品予約 DEV 6
2026-06-03 高橋 備品予約 SUP 1
2026-06-03 高橋 共通 MTG 1
2026-06-04 佐藤 備品予約 DEV 6.5
2026-06-04 佐藤 備品予約 REV 1.5
2026-06-04 鈴木 図書貸出 DEV 4.5
2026-06-04 鈴木 図書貸出 SUP 2.5
2026-06-04 鈴木 備品予約 REV 1
2026-06-04 高橋 図書貸出 DEV 5
2026-06-04 高橋 図書貸出 SUP 3
2026-06-05 佐藤 備品予約 DEV 5
2026-06-05 佐藤 備品予約 RWK 2
2026-06-05 佐藤 共通 MTG 1
2026-06-05 鈴木 図書貸出 DEV 7
2026-06-05 鈴木 共通 MTG 1
2026-06-05 高橋 備品予約 DEV 4.5
2026-06-05 高橋 備品予約 RWK 2.5
2026-06-05 高橋 共通 MTG 1
2026-06-08 佐藤 備品予約 DEV 6
2026-06-08 佐藤 共通 MTG 1
2026-06-08 佐藤 備品予約 REV 1
2026-06-08 鈴木 図書貸出 DEV 5
2026-06-08 鈴木 図書貸出 RWK 2
2026-06-08 鈴木 共通 MTG 1
2026-06-08 高橋 備品予約 DEV 6
2026-06-08 高橋 共通 MTG 1
2026-06-08 高橋 図書貸出 SUP 1
2026-06-09 佐藤 備品予約 DEV 4
2026-06-09 佐藤 備品予約 RWK 3
2026-06-09 佐藤 備品予約 SUP 1
2026-06-09 鈴木 図書貸出 DEV 6
2026-06-09 鈴木 図書貸出 SUP 2
2026-06-09 高橋 図書貸出 DEV 5
2026-06-09 高橋 図書貸出 SUP 2
2026-06-09 高橋 図書貸出 REV 1
2026-06-10 佐藤 備品予約 DEV 7
2026-06-10 佐藤 備品予約 REV 1
2026-06-10 鈴木 図書貸出 DEV 5.5
2026-06-10 鈴木 備品予約 REV 1.5
2026-06-10 鈴木 図書貸出 RWK 1
2026-06-11 佐藤 備品予約 DEV 6
2026-06-11 佐藤 備品予約 SUP 1.5
2026-06-11 佐藤 共通 MTG 0.5
2026-06-11 鈴木 図書貸出 DEV 7
2026-06-11 鈴木 共通 MTG 0.5
2026-06-11 高橋 備品予約 DEV 6
2026-06-11 高橋 備品予約 DEB 1.5
2026-06-11 高橋 共通 MTG 0.5
2026-06-12 佐藤 備品予約 DEV 5.5
2026-06-12 佐藤 備品予約 REV 1.5
2026-06-12 佐藤 共通 MTG 1
2026-06-12 鈴木 図書貸出 DEV 6
2026-06-12 鈴木 図書貸出 REV 1
2026-06-12 鈴木 共通 MTG 1
2026-06-12 高橋 備品予約 DEV 5
2026-06-12 高橋 図書貸出 SUP 2
2026-06-12 高橋 共通 MTG 1
作業分類コードの設計例
作業分類は、後から「何に時間を使ったか」を読むための切り口です。数が多いと選ぶのに迷い、少ないと読み取れることが減ります。5〜7個から始めるのが扱いやすい数です。
| コード | 名称 | 含める作業 | 分けておく理由 |
|---|---|---|---|
| DEV | 開発 | 設計、実装、自分のコードのテスト | 予定を立てた本来の作業 |
| REV | レビュー | ほかの人の設計書やコードの確認、指摘への返信 | 人数が増えると伸びる時間を見るため |
| MTG | 会議 | 定例、打ち合わせ、ふり返り | 案件に属さない時間の大きさを見るため |
| SUP | 問い合わせ対応 | 利用者や他チームからの質問、調査 | 予定に入れにくい割り込みを数えるため |
| RWK | 手戻り | 指摘や仕様の変更でやり直した作業 | 開発に混ぜると、やり直しの量が見えなくなるため |
分類シートのA1に貼るデータです。
コード 名称
DEV 開発
REV レビュー
MTG 会議
SUP 問い合わせ対応
RWK 手戻り
設計するときの考え方は次のとおりです。
| 決めること | 考え方 |
|---|---|
| 分類の数 | 5〜7個。迷わず選べる数にする |
| コードの形 | 英字3文字など短く固定長にする。名称は後から変えてもコードは変えない |
| 「その他」 | 置く場合は割合を毎週確かめ、1割を超えたら中身を見て分類を足す |
| 手戻り | 開発と分ける。やり直しの量は次の計画でいちばん使う数字になる |
| 問い合わせ対応 | 開発と分ける。割り込みの量が分かると、予定に余裕を入れる根拠になる |
| 工程で分けたいとき | 設計(DSN)、テスト(TST)を足す。分類を増やすより列を増やさないことを優先する |
記録の粒度:15分か30分か
記録の最小単位は、割り込みの短い作業をどこまで拾いたいかで決めます。
| 最小単位 | 1日8時間のコマ数 | 1コマが1日に占める割合 | 向いている場合 |
|---|---|---|---|
| 15分(0.25) | 32 | 3.125% | 問い合わせ対応など短い作業が多く、その量を知りたい |
| 30分(0.5) | 16 | 6.25% | 開発が中心で、入力の手間を抑えたい |
| 60分(1) | 8 | 12.5% | まず記録の習慣を作りたい、案件の数が少ない |
| 条件 | 選ぶ単位 |
|---|---|
| 初めて工数を記録する | 30分から始める |
| 10〜20分の割り込みが1日に何度もある | 15分 |
| 入力に1日5分以上かかっている | 単位を粗くする(15分→30分) |
| 分類別の割合が毎週ほぼ同じで細かさを使っていない | 単位を粗くする |
単位を決めたら、切り上げるのか、近いほうに丸めるのかもそろえます。50分の作業(50÷60時間)を丸めた結果は次のとおりです。
| 式 | 意味 | 結果 |
|---|---|---|
=CEILING(50/60,0.25) |
15分単位に切り上げ | 1 |
=MROUND(50/60,0.25) |
15分単位で近いほうに丸める | 0.75 |
=CEILING(50/60,0.5) |
30分単位に切り上げ | 1 |
=MROUND(50/60,0.5) |
30分単位で近いほうに丸める | 1 |
同じ50分でも、15分単位では丸め方で0.25時間の差が出ます。1日の合計を所定時間に合わせるルールにしておくと、丸めの差は1日の中で打ち消されます。
集計の数式:案件別・分類別・週別
集計はすべてSUMIFSで書けます。SUMIFSは SUMIFS(合計対象範囲, 条件範囲1, 条件1, …) の形で、条件をすべて満たす行の合計を返します。
案件別の集計
「案件別」シートのA列に案件名を書き、B2とC2に次の式を入れて下にコピーします。
B2: =SUMIFS(入力!$E:$E,入力!$C:$C,A2)
C2: =B2/SUM(入力!$E:$E)
計算結果です。
| 案件 | 時間 | 割合 |
|---|---|---|
| 備品予約 | 120.5 | 52.1% |
| 図書貸出 | 94.5 | 40.8% |
| 共通 | 16.5 | 7.1% |
| 合計 | 231.5 | 100.0% |
分類別の集計
「分類別」シートのA列にコードを書きます。B列は名称の表示、C列が合計、D列が割合です。
B2: =IFERROR(VLOOKUP(A2,分類!$A$2:$B$6,2,FALSE),"コード未登録")
C2: =SUMIFS(入力!$E:$E,入力!$D:$D,A2)
D2: =C2/SUM(入力!$E:$E)
| コード | 名称 | 時間 | 割合 |
|---|---|---|---|
| DEV | 開発 | 163.5 | 70.6% |
| REV | レビュー | 14.5 | 6.3% |
| MTG | 会議 | 16.5 | 7.1% |
| SUP | 問い合わせ対応 | 23.5 | 10.2% |
| RWK | 手戻り | 12 | 5.2% |
| 合計 | 230 | 99.4% |
合計が230で、案件別の合計231.5と1.5時間合いません。分類別の合計と入力の総計の差は、登録されていないコードで入力された時間です。 この差を出す式を分類別シートに置いておくと、毎週の確認が1セルで済みます。
C7(分類別の合計): =SUM(C2:C6) → 230
C8(入力の総計): =SUM(入力!$E:$E) → 231.5
C9(差): =C8-C7 → 1.5
週別の集計
「週別」シートのA列に週の開始日(月曜日)を、1行目のB〜D列に案件名を書きます。B2に次の式を入れ、右と下にコピーします。
B2: =SUMIFS(入力!$E:$E,入力!$A:$A,">="&$A2,入力!$A:$A,"<"&$A2+7,入力!$C:$C,B$1)
| 週の開始日 | 備品予約 | 図書貸出 | 共通 | 合計 |
|---|---|---|---|---|
| 2026-06-01 | 63 | 48 | 9 | 120 |
| 2026-06-08 | 57.5 | 46.5 | 7.5 | 111.5 |
3人×5日×8時間は120時間なので、2週目は8.5時間足りないことがここで分かります。日付から週の開始日(月曜日)を求めたいときは次の式を使います。2026-06-12(金)を入れると2026-06-08が返ります。
=入力!A2-WEEKDAY(入力!A2,2)+1
予定工数表と、差・消化率の出し方
予定は案件×作業分類の組で持ちます。入力と同じ切り口にしておくと、SUMIFSの条件2つでそのまま比べられます。「予定」シートのA1に次を貼ります(予定時間は2週間分の架空の値です)。
案件 作業分類 予定時間
備品予約 DEV 100
備品予約 REV 12
備品予約 SUP 6
備品予約 RWK 6
図書貸出 DEV 80
図書貸出 REV 6
図書貸出 SUP 12
図書貸出 RWK 4
共通 MTG 20
D〜F列に次の式を入れて下にコピーします。
D1: 実際の時間 D2: =SUMIFS(入力!$E:$E,入力!$C:$C,A2,入力!$D:$D,B2)
E1: 差 E2: =D2-C2
F1: 消化率 F2: =IF(C2=0,"",D2/C2)
計算結果です。
| 案件 | 作業分類 | 予定時間 | 実際の時間 | 差 | 消化率 |
|---|---|---|---|---|---|
| 備品予約 | DEV | 100 | 95 | -5 | 95.0% |
| 備品予約 | REV | 12 | 10.5 | -1.5 | 87.5% |
| 備品予約 | SUP | 6 | 4.5 | -1.5 | 75.0% |
| 備品予約 | RWK | 6 | 9 | 3 | 150.0% |
| 図書貸出 | DEV | 80 | 68.5 | -11.5 | 85.6% |
| 図書貸出 | REV | 6 | 4 | -2 | 66.7% |
| 図書貸出 | SUP | 12 | 19 | 7 | 158.3% |
| 図書貸出 | RWK | 4 | 3 | -1 | 75.0% |
| 共通 | MTG | 20 | 16.5 | -3.5 | 82.5% |
| 合計 | 246 | 230 | -16 | 93.5% |
読み方のポイントは3つです。
- 合計の消化率だけでは偏りが見えません。 全体は93.5%でも、図書貸出の問い合わせ対応は158.3%、備品予約の手戻りは150.0%です。
- 差がプラスの行は、次の計画で予定を見直す候補です。 図書貸出では問い合わせ対応が7時間多く、その分だけ開発が11.5時間少なくなっています。
- 消化率は「使った時間の割合」で、進み具合ではありません。 消化率が95%で作業が半分しか終わっていなければ、残りの予定を組み直す合図になります。完了した量と並べて読みます。
差の列に条件付き書式(0より大きいセルに色)を付けると、見るべき行がひと目で分かります。
入力漏れを見つける式
集計を読む前に、入力がそろっているかを確かめます。見るのは担当×日付の合計、登録されていないコード、空欄の3つです。
担当×日付の合計と判定
「漏れ」シートのA列に平日の日付、1行目のB〜D列に担当名を書きます。
B2: =SUMIFS(入力!$E:$E,入力!$A:$A,$A2,入力!$B:$B,B$1)
E2: =IF(B2=0,"未入力",IF(B2<>8,"要確認",""))
B2は右にD列まで、E2は右にG列までコピーし、どちらも下にコピーします(E列は佐藤、F列は鈴木、G列は高橋の判定です)。
| 日付 | 佐藤 | 鈴木 | 高橋 | 佐藤の判定 | 鈴木の判定 | 高橋の判定 |
|---|---|---|---|---|---|---|
| 2026-06-01〜06-09 | 8 | 8 | 8 | |||
| 2026-06-10 | 8 | 8 | 0 | 未入力 | ||
| 2026-06-11 | 8 | 7.5 | 8 | 要確認 | ||
| 2026-06-12 | 8 | 8 | 8 |
(2026-06-01〜06-09の7日分は全員8時間で判定が空欄のため、1行にまとめています。)
件数は次の式で数えられます。結果は未入力が1、要確認が1です。
=COUNTIF(E2:G11,"未入力") → 1
=COUNTIF(E2:G11,"要確認") → 1
休暇の日が「未入力」と表示されるのを避けたいときは、分類に休暇(OFF)を足して8時間で入力する方法が簡単です。集計では案件を「共通」にしておけば、案件別の数字に混ざりません。
登録されていないコードと空欄
未登録コードの行数: =SUMPRODUCT((入力!$D$2:$D$80<>"")*(COUNTIF(分類!$A$2:$A$6,入力!$D$2:$D$80)=0)) → 1
空欄のセル数: =COUNTBLANK(入力!$A$2:$E$80) → 0
どの行かを知りたいときは、入力シートのF列(確認用の列)に次の式を入れて下にコピーします。サンプルでは70行目(2026-06-11、高橋、DEB)に「コード未登録」と表示されます。DEVの打ち間違いです。
F2: =IF(D2="","",IF(COUNTIF(分類!$A$2:$A$6,D2)=0,"コード未登録",""))
作業分類の列に入力規則(リスト)を設定しておくと、この種の打ち間違いは入力の時点で防げます。
Pythonで検算する
表計算の式が合っているかを、別の手段で確かめておくと安心です。入力データを input.tsv、予定工数表を plan.tsv という名前でUTF-8で保存し、同じフォルダで次のコードを実行します。
import csv
from collections import defaultdict
from datetime import date, timedelta
CODES = {"DEV", "REV", "MTG", "SUP", "RWK"}
SHOTEI = 8.0 # 1日の所定時間
with open("input.tsv", encoding="utf-8", newline="") as f:
rows = list(csv.DictReader(f, delimiter="\t"))
with open("plan.tsv", encoding="utf-8", newline="") as f:
plan = {(r["案件"], r["作業分類"]): float(r["予定時間"])
for r in csv.DictReader(f, delimiter="\t")}
by_anken, by_code, by_week = defaultdict(float), defaultdict(float), defaultdict(float)
by_pair, by_day = defaultdict(float), defaultdict(float)
for r in rows:
h = float(r["時間"])
d = date.fromisoformat(r["日付"])
monday = d - timedelta(days=d.weekday())
by_anken[r["案件"]] += h
by_code[r["作業分類"]] += h
by_week[(monday, r["案件"])] += h
by_pair[(r["案件"], r["作業分類"])] += h
by_day[(d, r["担当"])] += h
total = sum(float(r["時間"]) for r in rows)
print("行数", len(rows), "総計", total)
print("案件別", dict(by_anken))
print("分類別", dict(by_code))
for (monday, anken), h in sorted(by_week.items()):
print("週別", monday, anken, h)
print("予定との比較")
for key, p in plan.items():
a = by_pair[key]
print(f" {key[0]}\t{key[1]}\t予定{p:g}\t実際{a:g}\t差{a - p:+g}\t消化率{a / p:.1%}")
print("未登録コード", [(r["日付"], r["担当"], r["作業分類"]) for r in rows
if r["作業分類"] not in CODES])
days = sorted({date.fromisoformat(r["日付"]) for r in rows})
people = sorted({r["担当"] for r in rows})
for d in days:
for p in people:
h = by_day[(d, p)]
if h != SHOTEI:
print("入力の確認", d, p, h, "未入力" if h == 0 else "要確認")
実行結果です。
行数 79 総計 231.5
案件別 {'備品予約': 120.5, '共通': 16.5, '図書貸出': 94.5}
分類別 {'DEV': 163.5, 'MTG': 16.5, 'REV': 14.5, 'SUP': 23.5, 'RWK': 12.0, 'DEB': 1.5}
週別 2026-06-01 備品予約 63.0
週別 2026-06-01 共通 9.0
週別 2026-06-01 図書貸出 48.0
週別 2026-06-08 備品予約 57.5
週別 2026-06-08 共通 7.5
週別 2026-06-08 図書貸出 46.5
予定との比較
備品予約 DEV 予定100 実際95 差-5 消化率95.0%
備品予約 REV 予定12 実際10.5 差-1.5 消化率87.5%
備品予約 SUP 予定6 実際4.5 差-1.5 消化率75.0%
備品予約 RWK 予定6 実際9 差+3 消化率150.0%
図書貸出 DEV 予定80 実際68.5 差-11.5 消化率85.6%
図書貸出 REV 予定6 実際4 差-2 消化率66.7%
図書貸出 SUP 予定12 実際19 差+7 消化率158.3%
図書貸出 RWK 予定4 実際3 差-1 消化率75.0%
共通 MTG 予定20 実際16.5 差-3.5 消化率82.5%
未登録コード [('2026-06-11', '高橋', 'DEB')]
入力の確認 2026-06-10 高橋 0.0 未入力
入力の確認 2026-06-11 鈴木 7.5 要確認
案件別・週別・予定との比較・入力の確認は、表計算の結果とすべて一致しました。分類別には DEB の1.5時間がそのまま現れ、分類別シートの「差 1.5」と対応しています。
SUMIFS・ピボットテーブル・専用ツールの選び方
| 方法 | 向いている場面 | 気をつける点 |
|---|---|---|
| SUMIFS | 見たい表の形が決まっている。予定との差や消化率を同じ表に並べたい | 案件や分類が増えたら集計表に行を足す |
| ピボットテーブル | 切り口を変えながら眺めたい(担当別、日別など) | 入力を足したら更新の操作が要る。予定との比較は別の表が要る |
| 専用ツール | 人数が多い、入力の催促や承認の流れが要る、ほかの仕組みと連携したい | 導入と設定の手間。分類の設計は表計算と同じく自分たちで決める |
| 条件 | 選ぶ方法 |
|---|---|
| 10人前後までで、まず記録を始めたい | 表計算+SUMIFS |
| 毎週同じ形の報告を出す | SUMIFS |
| 「担当別に見たら?」など、その場の問いに答えたい | ピボットテーブルを併用 |
| 同じファイルを同時に開く人が多く、入力が重なる | 専用ツールを検討 |
| 入力漏れの確認に毎週30分以上かかっている | 専用ツールを検討 |
SUMIFSとピボットテーブルは併用できます。定例の報告はSUMIFS、深掘りはピボットテーブルと役割を分けると、どちらの良さも生かせます。
確かめて分かったこと
- 分類コードを1行打ち間違えただけで、分類別の合計が入力の総計より1.5時間少なくなりました。 SUMIFSはエラーを出さず、合わない行を黙って除きます。総計との差を出すセルを置くと気づけます。
- 日付が文字列で入っている行は、日付の範囲を条件にしたSUMIFSで合計されませんでした。 文字列の「2026-06-01」(3時間)と日付の2026-06-02(4時間)を並べ、6月1日〜7日の条件で合計した結果は4でした。貼り付けた後に
=COUNT(入力!A:A)で数値として数えられる件数を確かめると、文字列の混入が分かります。 - 合計の消化率93.5%の内側に、158.3%と66.7%の行が同時にありました。 比較は案件×分類の組で行うと、偏りが読み取れます。
- 週別の合計を「人数×日数×所定時間」(120時間)と比べると、漏れの総量(2週目で8.5時間)がすぐ分かりました。 内訳は未入力8時間と不足0.5時間で、担当×日付の表の結果と一致します。
- 50分の作業は、15分単位では切り上げで1、近いほうへの丸めで0.75と結果が分かれました。 30分単位ではどちらも1です。丸め方は単位と一緒に決めておきます。
よくある質問
Q. 工数管理とは何ですか? A. 誰が・どの案件の・どの作業に・何時間使ったかを記録して集計する取り組みです。予定との差を見て、次の計画や見積もりの根拠にします。
Q. 工数管理と勤怠管理の違いは何ですか? A. 勤怠管理は働いた時間そのもの、工数管理はその時間の使い道を記録します。1日の工数の合計が勤怠の労働時間と合っているかを確かめると、入力漏れが見つかります。
Q. SUMIFSの結果が0になるときはどうすればよいですか? A. 条件の文字と入力の文字が一致しているか、日付が文字列になっていないかを確かめます。案件名の前後の空白や全角・半角のゆれも原因になるため、リストから選ぶ入力規則にしておくと防げます。
Q. 工数は何分単位で記録するのがよいですか? A. 迷ったら30分単位から始めます。短い割り込みが多く、その量を知りたい場合は15分単位にします。
Q. 予定がない作業(問い合わせ対応など)はどう扱いますか?
A. 分類を独立させ、予定工数表にも行を作っておきます。予定が0の行は、消化率の式を =IF(C2=0,"",D2/C2) にしておくと割り算のエラーになりません。
まとめ
- 入力は日付・担当・案件・作業分類・時間の5列、1行1作業にする
- 集計は別シートのSUMIFSに任せ、案件別・分類別・週別の3つの表を作る
- 作業分類は5〜7個。手戻りと問い合わせ対応は開発から分ける
- 予定との比較は案件×分類の組で行い、差と消化率を並べる
- 担当×日付の合計、未登録コード、空欄の3つを先に確かめてから集計を読む
- 分類別の合計と入力の総計の差を1セルで出しておくと、打ち間違いに気づける
- 記録の単位は30分から始め、割り込みが多ければ15分にする
参考・出典
- Microsoft サポート「SUMIFS 関数」 https://support.microsoft.com/ja-jp/office/sumifs-関数-c9e748f5-7ea7-455d-9406-611cebce642b (構文、条件は最大127組、条件範囲は合計対象範囲と同じ行数・列数にすること。2026-10-06に確認)
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「工数管理のやり方|Excel入力表と集計数式・予定比較のテンプレート」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。