Excelで時刻に「12.5分」のような小数の分を足すなら、正解は =MOD(A2+B2/1440,1) です。TIME関数は引数の小数を切り捨てるため12.5分が12分になります。24時間を超える合計は[h]:mm書式で表示します。
作業時間の記録やタイムスタンプの補正では、「12.5分後」「7.25分前」といった小数の分を扱う場面がよくあります。ところが素直にTIME関数を使うと、30秒ぶんがきれいに消える。原因も対処も単純なので、ここで一度整理しておきましょう。
▲ Date and Time サンプル
なぜTIME関数では小数の分が消えるのか
TIME(時,分,秒) は、引数を整数に切り捨ててから時刻に変換する仕様です。
| 数式 | 結果 | 期待値 |
|---|---|---|
=TIME(0,12.5,0) |
0:12:00 | 0:12:30 |
=TIME(0,7.25,0) |
0:07:00 | 0:07:15 |
=TIME(0,0.5,0) |
0:00:00 | 0:00:30 |
0.5分がまるごと切り捨てられ、TIME(0,0.5,0) に至っては結果がゼロになります。エラーが出ないので、集計してから「なんか合わない」と気づくのが厄介なところです。
なお、TIME関数そのものが壊れているわけではありません。=TIME(0,90,0) はきちんと 1:30 を返し、60を超える分・秒は正しく繰り上がります。ダメなのは小数だけです。
秒に直して =TIME(0,0,B2*60) とする回避策もありますが、12.34分 = 740.4秒 のように秒側が小数になると同じ問題が再発します。根本的な解決になりません。
時間の足し算の正解は「1440で割る」
Excelの時刻は1日=1のシリアル値で管理されています。つまり単位ごとに割る数が決まっているだけです。
| 足したい単位 | 割る数 | 数式 |
|---|---|---|
| 時 | 24 | =A2+B2/24 |
| 分 | 1440 | =A2+B2/1440 |
| 秒 | 86400 | =A2+B2/86400 |
1440は 24×60 です。この方法なら小数がそのまま生きるので、9:00 に 12.5 を足せば 9:12:30 と正しく出ます。
=A2+B2/1440
結果が数値のまま表示されたら、セルの表示形式を「時刻」または h:mm:ss に変更してください。秒未満まで確認したいときはユーザー定義書式で h:mm:ss.00 と指定します。
MODで日をまたいだ時刻を正しく戻す
問題になるのは、計算結果が0〜1の範囲を飛び出すケースです。
23:50に25.5分を足す → 結果は1.0107…(翌日扱い)0:05から10分を引く → 結果は-0.0035…→ セルが#####で埋まる
とくにマイナスは表示エラーになるため実害が大きい。ここで MOD の出番です。
=MOD(A2+B2/1440,1)
MOD(値,1) は1で割った余りを返す関数です。1日=1なので、これは「24時間の周期に丸め込む」操作になります。しかもExcelの MOD は負の数でも正の余りを返すため、MOD(-0.0035,1) は 0.9965、つまり 23:55 になります。翌日への繰り上がりも前日への巻き戻しも、この一つの式で片付きます。IF文で場合分けする必要はありません。
引き算のときも同じ形です(Bにマイナスを入れるなら足し算のままで構いません)。
=MOD(A2-B2/1440,1)
実際の入力と結果
C2 に =MOD(A2+B2/1440,1)、表示形式は h:mm:ss を指定した場合です。
| A列(時刻) | B列(分) | C列(結果) |
|---|---|---|
| 9:00 | 12.5 | 9:12:30 |
| 9:00 | 7.25 | 9:07:15 |
| 23:50 | 25.5 | 0:15:30 |
| 0:05 | -10 | 23:55:00 |
| 12:00 | 0.5 | 12:00:30 |
コピペする前に、この5行と同じ値が返るか確認しておくと安心です。
MODを使ってはいけないケース
MODは万能ではなく、むしろ害になる場面が2つあります。日付入りの日時と、累計の所要時間です。まず目的別に使い分けを決めてください。
| 対象 | 数式 | 表示形式 |
|---|---|---|
| 時刻のみ(9:00) | =MOD(A2+B2/1440,1) |
h:mm |
| 日付+時刻(2026/9/2 23:50) | =A2+B2/1440(MOD不要) |
yyyy/m/d h:mm |
| 経過時間の累計 | =A2+B2/1440(MOD禁止) |
[h]:mm |
日付+時刻の場合:2026/9/2 23:50 のような日時シリアル値は、=A2+B2/1440 だけで日付ごと正しく繰り上がります。ここでMODを付けると整数部=日付が丸ごと消え、1900/1/0 0:15 のような結果になります。
累計の場合:作業時間の合計が「26時間30分」だったとして、MODで包むと 2:30 になってしまいます。時刻ではなく経過時間を扱うなら、MODは付けずに表示形式を変えます。
セルの書式設定 → ユーザー定義 → [h]:mm
角カッコ付きの [h] は24時間で繰り上げずに累積表示する指定です。分の累計なら [m]、秒なら [s] を使います。
判断基準はシンプルで、「何時何分」を出したいならMOD、「何時間かかったか」を出したいなら[h]:mm です。
小数の分を合計して総作業時間を出す
実務でいちばん多いのが、小数の分が並んだ列を合計するパターンです。B列に 12.5、7.25、40 …と分が入っているなら、こう書きます。
=SUM(B:B)/1440
そのうえで表示形式を [h]:mm にすれば、24時間を超えても 26:30 と正しく出ます。MODは付けません。分の合計値そのものを見たいなら =SUM(B:B) のまま標準書式で構いません。
秒がズレる・条件付き書式が効かないとき
0.1分 のような値は2進数で正確に表せないため、比較や条件付き書式でわずかにズレることがあります。見た目は 9:12:30 なのに「9:12:30と等しい」の条件に一致しない、という現象です。秒単位まで確定させたいなら、秒に換算して丸めます。
=ROUND((A2+B2/1440)*86400,0)/86400
「必ず1分単位に切りそろえたい」ならこちら。
=MROUND(A2+B2/1440,1/1440)
=MROUND(A2+B2/1440,"0:01") と書いても動きますが、文字列の時刻表記はロケール依存なので、環境をまたぐブックでは 1/1440 のほうが安全です。
よくあるつまずき
B列が文字列になっている
「12.5」が左寄せなら文字列です。=A2+VALUE(B2)/1440 で明示的に数値化します。CSV取り込み後によく起きます。
「12分30秒」と書かれた列を足したい
=A2+B2 で足せます。0:12:30 と入力された時刻値なら、それ自体がシリアル値なので変換は不要です。
負の経過時間を表示したい
Excelの標準設定では負の時刻は表示できません。オプション →「詳細設定」→「1904年から計算する」を有効にすれば表示可能ですが、他ブックとの日付ズレを招くため、=TEXT(ABS(差),"h:mm") で符号を別に扱うほうが安全です。
まとめ
- 小数の分にTIME関数は使わない(切り捨てられる。60超の繰り上がりは正常)
- 基本形は
=A2+B2/1440 - 24時間表記に収めるなら
=MOD(A2+B2/1440,1) - 日付入りの日時と累計時間にはMODを使わない
- 累計は
=SUM(B:B)/1440+[h]:mm書式 - 単位が変わったら割る数を変えるだけ(時=24/分=1440/秒=86400)
「1440で割る」という発想さえ持っておけば、時・分・秒のどれが来ても同じ手順で対応できます。TIME関数は整数の時刻を組み立てる用途に限定して使い分けるのがおすすめです。
関連記事
- 【Excel】時刻に「1.5時間」を足す=MOD(A2+B2/24,1)|30分が消えるTIME関数の罠
- Excelで日付に日数を足す方法|+7・EDATE・WORKDAYの使い分け早見表
- Excelで特定の曜日を除いて日数を足す方法|水曜定休もWORKDAY.INTLで一発
- Excelで「5営業日後」を出す方法|WORKDAY関数で土日祝スキップ
- Excel×Claude×Power Automateで日次レポートを全自動化|5アクションで組む手順とハマりどころ5つ
あわせてチェック
この記事を読んだ方におすすめ
<最大10万pt当選※5千円以上購入&エントリー 8/20~31まで>「関数」を… ¥2,420
著者IO編集部(編)出版社工学社発売日2022年10月ISBN9784777522194ページ数127Pキーワードかんすうおつかつたえくせるじたんてくにつくかんすう カンスウオツカツタエクセルジタンテ…
楽天市場で詳細を見る → <最大10万pt当選※5千円以上購入&エントリー 8/20~31まで>「関数」を…