
Googleスプレッドシートでの時間を計算すると、「24時間でリセットされる」「日付をまたぐとマイナスになる」といった問題が発生することがあります。この記事では、これらの問題の原因であるシリアル値の仕組みから、SUM、IF、TIMEなどの関数を使った時間の計算方法を解説します。
シリアル値とは?(時間計算の基本)

時間は24時を「1」とする、シリアル値という数値で定義されています。
たとえば、時刻(例:8:00)に「5」という数値を足し算すると、120時間(24時間×5)の加算と同じになります。この場合、計算結果は24時間が5週回って全く同じ時刻の8:00になります。
加算したい「5分」を表すシリアル値は0.0035(5÷24時間÷60分)なので、=A2+B2/24/60をすれば、8:05を返します。
合計時間を算出する(SUM関数)
時間を合計する
1. SUM関数で合計する

複数の勤務時間などを合計したい場合、まずSUM関数で合計します。
例:=SUM(C2:C4)
【ポイント】
- 時間は「時刻」として扱われるため、合計が24時間を越えると翌日の時刻としてリセットされ、表示が「
0:00」や「4:00(28時間の場合)」などになってしまいます。
2. 表示形式を「経過時間」に設定する

合計時間を正しく表示するためには、SUM関数で計算された結果を「時刻」ではなく、「経過した時間の長さ」として扱うように設定する必要があります。
【手順】
- SUM関数を入力したセルを選択します。
- 「表示形式」→「数字」→「経過時間」をクリックします。
日付をまたぐ勤務時間を合計する

SUM関数で時間を合計すると、想定より少ない経過時間(例:2:00など)になることがあります。
これは、日付をまたぐ時間(例:22:00〜6:00)を単純に引き算すると、結果がマイナスになってしまうのが原因です。このマイナスの値が、全体の合計時間を引き下げてしまいます。
そのため、以下のいずれかの方法で、経過時間を正しく計算する必要があります。
1. IF関数を使う

IF関数で条件分岐させ、終了時間が開始時間より小さいなら日付をまたいでいると判断し、1(24時間)を加算することでマイナス値を修正します。
例:=IF(B2>A2,B2-A2,B2-A2+1)
【数式の解説】
- 論理式(B2>A2):終了時間が、開始時間よりも大きいかどうかを判定します。
- 真の場合(B2-A2):論理式が成立なら、そのまま経過時間を算出します。(例:17:00-8:00)
- 偽の場合(B2-A2+1):論理式が不成立(日付をまたいでいる)なら、経過時間に1(24時間)を足して、正しい経過時間を算出します。
IF関数の引数:(論理式, TRUE値, FALSE値)
時間は24時を「1」とする、シリアル値で定義されています。そのため、数字の1を加算するのは、時間で24時間を加算していることになります。
2. MOD関数を使う

MOD関数を使うと、IF関数よりも数式をシンプルに記述できます。
例:=MOD(B2-A2,1)
MOD関数の引数:(被除数, 除数)
MOD関数は、割り算の余りを求める関数です。
MOD関数は、正の余りを求めるために、計算の過程で、負の数に対して「1周期(この場合は1)」を足して余りを求めようとします。これにより、マイナスになった計算結果を自動的にプラスに戻すことができます。
時刻に特定の分・時間を加算する(TIME関数)

たとえば、8:00に5分を足し算したい場合、TIME関数を使って次のように記述します。
例:=A2+TIME(0,B2,0)
TIME関数の引数:(時, 分, 秒)