Menu

Excel 时间计算:求两个时间之间的小时数

=B2-A2 返回 A2 的开始时间到 B2 的结束时间之间的时长:设置为 h:mm 格式显示 8:30,乘以 24 得到 8.5 小时。还包括跨午夜的班次、超过 24 小时的合计,以及按工时算工资。

本页的每张表格都是实时的:修改数字或公式,就会重新计算。

=B2-A2 返回 A2 的开始时间与 B2 的结束时间之间的时长。Excel 把时间存储为一天的几分之几(12:00 是 0.5),所以结果也是一个小数:设置为 h:mm 格式就显示为 8:30,乘以 24 就得到 8.5 小时。

工作时长
C2
ABCD
1StartEndHoursDecimal hours
29:0017:308:308.50
38:1516:458:308.50
47:3012:004:304.50
513:0018:205:205.33
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

第一行的结果以时间表示是 8:30,以数字表示是 8.50。13:00 到 18:20 是 5:20,即 5.33 小时。给人看的结果用 h:mm 那一列,要参与计算(比如算工资)的用小数那一列。在“常规”格式的单元格中,同样的结果会显示为原始的小数,8:30 显示为 0.354167。

加减小时和分钟

给时间加上一段时间也是同样的道理。用 TIME(时, 分, 秒) 构造要加的时长,或者把小时数除以 24、把分钟数除以 1440。

时间的加减
B2
ABCD
1StartPlus 1:30Plus 45 minutesMinus 2 hours
29:0010:309:457:00
314:2015:5015:0512:20
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

从 9:00 开始,三列分别得到 10:30、9:45 和 7:00;从 14:20 开始,得到 15:50、15:05 和 12:20。时间也可以写在引号里:=A2+"1:30" 加上一个半小时。

计算跨午夜的时间

22:00 到 6:00 的夜班在开始“之前”就结束了,所以 =B2-A2 是负数:-16 小时。时间不能为负,Excel 会在单元格中填满 #####。MOD(B2-A2,1) 给负数结果加上一天,正数结果则保持不变,所以白班和夜班可以放在同一列里计算。

跨午夜的班次
C2
ABCD
1StartEndHoursDecimal hours
222:006:008:008.00
39:0017:008:008.00
423:307:157:457.75
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

这三个班次分别长 8:00、8:00 和 7:45。另一种写法是 =B2-A2+(B2<A2):结束时间较早时比较结果为 1,相当于加上一天。如果开始和结束都是完整的日期时间(2026-03-14 22:00),直接相减就够了,因为日期已经说明了每个时间在哪一天。

合计超过 24 小时的工时

h:mm 显示的是一天中的时刻,所以到 24 就会归零:一周 42 小时 30 分钟会显示为 18:30。带方括号的 [h]:mm 格式显示总小时数,不会归零。

每周合计:h:mm 与 [h]:mm
C7
ABCD
1StartEndHoursTotal as [h]:mm
28:0016:308:30
38:0016:308:30
49:0017:308:30
58:0016:308:30
68:0016:308:30
7Total18:3042:30
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

C7 显示 18:30,D7 显示 42:30。两个单元格存的是同一个数(1.77 天),只是格式不同。设置方法:开始 > 数字格式 > 其他数字格式 > 自定义,然后输入 [h]:mm。要得到小数形式的合计,就乘以 24:42.5。

时间与小数小时互相转换

把时间乘以 24 得到小时数,乘以 1440 得到分钟数。要转回来,就把小数小时除以 24,再把单元格设置为 h:mm 格式。HOUR 和 MINUTE 以整数形式返回时间中的时和分。

时间与小数小时
B2
ABCDEF
1TimeHoursMinutesHOURMINUTEBack from hours
26:456.754056456:45
31:201.33801201:20
40:500.83500500:50
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

6:45 是 6.75 小时、405 分钟,时为 6,分为 45。1:20 是 1.33 小时。HOUR 只返回 0 到 23,所以超过一天的时长要改用 =INT(A2*24)。F 列把小数小时转回了原来的时间。如果你的工作簿中 =A2*24 显示为 18:00,说明结果沿用了 A2 的时间格式:把单元格设置为“常规”或“数值”即可。

练习:工资和夜班

轮到你了:计算当天工资
D2
ABCD
1StartEndRatePay
28:3016:0018
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 D2 中计算工资:A2 的开始时间到 B2 的结束时间之间的小时数,乘以 C2 中的时薪。

轮到你了:跨午夜的小时数
C2
ABC
1StartEndHours
222:005:30
39:0017:00
点击单元格查看它的公式。修改数字或公式,表格会重新计算。

轮到你了: 在 C2 中以小数小时返回班次时长,然后向下填充到 C3。班次可能会跨过午夜。

时间结果为什么显示 ##### 或小数

大多数时间计算的问题都来自三种显示问题:

  • #####:结果是负的时间,通常是用 =B2-A2 计算了跨夜班次。改用 =MOD(B2-A2,1)。(列太窄时也会显示 #####,把列拉宽就能分辨是哪一种。)
  • 0.354 这样的小数:单元格是“常规”格式。设置为 h:mm,如果你要的是小时数,就乘以 24。
  • 合计偏小:总和超过了 24 小时,h:mm 归零了。改用 [h]:mm。

以文本形式输入的时间('9:00,或从其他系统粘贴过来的值)不是数字:SUM 会跳过它们,所以这些单元格的合计会偏小甚至为 0。真正的时间用 =ISNUMBER(A2) 会返回 TRUE;=TIMEVALUE(A2) 可以把 "9:00" 这样的文本转换成时间。

常见问题

Excel 中怎么计算两个时间之间的小时数?

用结束时间减去开始时间,=B2-A2,再把单元格设置为 h:mm 格式。要得到数字形式的小时数,就乘以 24:=(B2-A2)*24 把 8:30 变成 8.5。

Excel 中跨午夜的时间怎么算?

用 =MOD(B2-A2,1)。22:00 到 6:00 的班次直接相减得到 -16 小时;MOD 会给任何负数结果加上一天,得到 8:00。

为什么小时合计超过 24 小时后又从零开始?

h:mm 格式显示的是一天中的时刻,所以 42 小时 30 分钟会显示为 18:30。把合计设置为 [h]:mm 格式(开始 > 数字格式 > 其他数字格式 > 自定义),就会显示 42:30。

Excel 中怎么把时间转换成小数小时?

乘以 24:=A2*24。Excel 把时间存储为一天的几分之几,所以 6:45 是 0.28125,乘以 24 就是 6.75 小时。要得到分钟数就乘以 1440。

Excel 中怎么给时间加上几分钟?

=A2+TIME(0,45,0) 加上 45 分钟。=A2+45/1440 效果相同,因为一天有 1440 分钟。TIME 也可以加小时:TIME(2,30,0) 就是两个半小时。

Coddy 编程语言插图

和 Coddy 一起学编程

开始