Googleスプレッドシートは、勤務時間の管理にとても便利なツールです。開始時刻と終了時刻を入力するだけで、1日の勤務時間や週・月の合計時間を自動で計算できます。本記事では、スプレッドシート初心者でも迷わず使えるように、勤務時間の計算方法をわかりやすく解説します。
※本記事では「B列=開始時刻」「C列=終了時刻」「D列以降=休憩時間・勤務時間」という前提でシートを作成しています。ご自身のシートに合わせて列を読み替えてください。

この記事で紹介している数式は全部入りの無料テンプレートにまとめてあるよ。コピーしてすぐ使えるから、先にチェックしてもOK!
【この記事でわかること】
- 勤務時間計算の基本ルール
- シートの基本レイアウト例
- 計算結果を時間表示にする方法
- 勤務時間を合計する方法
- 合計が24時間を超える場合の注意点
- 休憩時間を差し引いて勤務時間を計算する方法
- 夜勤・深夜勤務の勤務時間をスプレッドシートで計算する方法
- ARRAYFORMULAで自動化するテクニック
- よくある質問(FAQ)
📌 1. 勤務時間計算の基本ルール
勤務時間の計算はとてもシンプルで、
勤務時間 = 終了時刻 − 開始時刻
という基本式で求められます。
Googleスプレッドシートは時刻を「時間の差」として扱えるため、複雑な関数は必要ありません。
📄 2. シートの基本レイアウト例

数式を表示した場合

勤務時間の列(例:D列)に以下の式を入力します。B2が開始時刻、C2が終了時刻です。
=C2 - B2
これで1日の勤務時間が自動計算されます。
⏱ 3. 計算結果を「時間表示」にする

計算結果が「0.35」のような小数で表示されることがあります。これはセルの表示形式が「時刻」ではなく「数値」になっているために起こります。この場合は表示形式を変更しましょう。
時間表示にする方法
①【表示形式】→【数字】→【カスタム日時】を選択する

②「秒(01)」の表示部分を選択する。

③【削除】を選択して「秒」を消す。続けて、分と秒の間にあるコロン(:)も削除します。
※時と分の間のコロンは残してください。ここを一緒に消してしまうと「8:30」ではなく「830」のように表示されてしまうので注意しましょう。

④【適用】を選択する。

これで「8:30」のように見やすい時間表示になります。
➕ 4. 勤務時間を合計する方法
週や月の合計時間を出すには、SUM関数を使います。
=SUM(E2:E32)
これでE2からE32の勤務時間がすべて合計されます。


あれ?合計時間が4時間15分になってるのどうして?

それは次の「合計が24時間を超える場合の注意点」で説明するね。実は表示形式が違っていることが原因なのよ
⏳ 5. 合計が24時間を超える場合の注意点
合計時間が24時間を超えると、スプレッドシートは正しく表示できないことがあります(24時を過ぎると日付が繰り上がってしまうため)。
その場合は、合計セルの表示形式を次のように変更します。
表示形式 → 数字 → 経過時間

これで40時間、100時間などの長時間も正しく表示できます。
🍱 6. 休憩時間を差し引いて勤務時間を計算する方法
ここからは応用編です。実際の勤務時間からは休憩時間を差し引くケースが多いので、その計算方法を紹介します。
休憩が1時間固定の場合:
=(C2 - B2) - TIME(1,0,0)
休憩が可変の場合は、休憩時間を入力する列(例:D列)を作り、
=C2 - B2 - D2
のように引き算すればOKです。
🌙 7. 夜勤・深夜勤務の勤務時間をスプレッドシートで計算する方法
終了時刻が翌日にまたがる場合は、IF関数を使って調整します。
=IF(C2 < B2, C2 + 1 - B2, C2 - B2)
「終了時刻が開始時刻より小さければ、日付が変わったとみなして1日分(24時間)を足す」という考え方です。これで「22:00〜翌6:00」などの夜勤にも対応できます。
🧩 8. 自動化したい場合はARRAYFORMULA
毎回式をコピーするのが面倒な場合は、これまで紹介した「休憩の差し引き」「夜勤の調整」もまとめて自動化できます。
ここでは1行目にタイトル、2行目に「開始」「終了」「休憩」などの項目名を入れ、3行目からデータを入力するシートを例にします(2行目までを見出しとして使うため、数式は3行目からのB3・C3・D3を基準にしています)。ご自身のシートの行数に合わせて、B3の部分を書き換えてください。
E3セルに次の数式を1つ入力するだけです。

=ARRAYFORMULA(IF(B3:B="",, C3:C - B3:B + (C3:C < B3:B) - D3:D))
この数式は、次の3つを一度にまとめて処理しています。
- 開始時刻(B列)が空欄の行は何も表示しない(
IF(B3:B="",, ...)の部分) - 終了時刻が翌日になる夜勤も自動調整する(
+ (C3:C < B3:B)の部分。終了時刻が開始時刻より小さければ1日分を自動で足します) - 休憩時間(D列)を自動で差し引く(
- D3:Dの部分)
1つの式を入れるだけで、行を追加してもすべての行に自動で反映されるので便利です。
⚠️ 注意:ARRAYFORMULAは計算結果を下方向に自動で広げていく(スピルする)仕組みです。そのため、E列の下の方に合計(SUM)などの数式を置いていると、広がってきた計算結果とぶつかって「配列の結果が他のデータと重なっています」というエラーになります。
これを避けるには、合計欄をデータより上(見出し行の近くなど)に配置するか、別の列・別シートに置くようにしましょう。
❓ よくある質問(FAQ)
Q. 計算結果が「0.35」のように小数で出るのはなぜ?
A. セルの表示形式が「数値」になっているためです。表示形式を「カスタム日時」に変更すると「8:30」のような時間表示になります。
Q. 合計時間が24時間を超えると表示がおかしくなります。
A. 合計セルの表示形式を「経過時間」に変更してください。40時間、100時間などの長時間でも正しく表示されます。
Q. 夜勤で日をまたぐ場合はどう計算すればいい?
A. IF関数を使い、終了時刻が開始時刻より小さい場合は24時間を足して計算します。詳しくは本文7章をご覧ください。
Q. ARRAYFORMULAを使ったら「配列の結果が他のデータと重なっています」というエラーが出ました。
A. ARRAYFORMULAの計算結果が下方向に広がる先に、合計(SUM)などの別の数式が置かれていることが原因です。合計欄をデータより上に移動するか、別の列に配置すると解決します。
✨ まとめ
Googleスプレッドシートで勤務時間を合計する方法は、基本的には「終了 − 開始」を積み重ねるだけ。
表示形式や休憩時間、夜勤などに対応すれば、どんな勤務体系でも柔軟に管理できます。
この記事では、
- 基本の計算方法
- 合計の出し方
- 表示形式の注意点
- 休憩・夜勤などの応用
- 自動化のテクニック
をまとめました。

ここまで紹介した数式は全部入りの無料テンプレートにまとめてあるよ。コピーしてそのまま使ってね!


コメント