我尝试使用在 Excel 中显示超过 24 小时的时间=TIME()
,但当值超过 24 小时时,它们显示不正确。例如,我应该显示 24:59。相反,它显示为 03:42。我已经将格式更改为 [hh:mm]。当对 3 个单独的值=TIME(27;42,81;49)
执行此操作时,此方法可以正常工作。=SUM()
答案1
TIME() 官方文章表明它仅用于显示 24 小时。因此,的显示03:42
是正确的。如果您想使用任意数量的小时、分钟和秒,您可能无法使用该功能,而是可以使用单元格格式。
答案2
此TIME()
功能按规定运行。从在线手册,第一个参数定义如下:-
小时 必需。从 0(零)到 32767 的数字,表示小时。任何大于 23 的值都将除以 24,余数将被视为小时值。例如,TIME(27,0,0) = TIME(3,0,0) = .125 或 3:00 AM。
如果要显示 23 以上的小时数,则需要构建和格式化自己的值,例如,如果小时、分钟和秒数为A1:C1
,则设置D1
为:
=A1/24+B1/1440+C1/86400
现在,您只需将单元格格式化为[hh]:mm:ss
,如 Aganju 的答案中所建议的那样。
[我保留我之前关于输出格式的建议,因为它使用的技术可能在 Aganju 格式无法处理的情况下有用。]
或者,以下命令将生成所需格式的单元格:
=TEXT(ROUNDDOWN(D1*24),"##")&":"&TEXT(ROUNDDOWN(MOD(D1*1440,60)),"##")&":"&TEXT(ROUNDDOWN(MOD(D1*86400,60)),"##")
严格来说,秒字段应该使用=ROUND()
而不是=ROUNDDOWN()
,但这会导致秒值为 59.5 及以上时出现问题。
如果最接近的舍入很重要,则D1
必须先将其本身舍入到最接近的秒(1/86400),例如设置E1
为:
=ROUND(D1*86400)/86400
格式化的单元格将为:
=TEXT(ROUNDDOWN(E1*24),"##")&":"&TEXT(ROUNDDOWN(MOD(E1*1440,60)),"00")&":"&TEXT(ROUNDDOWN(MOD(E1*86400,60)),"00")
无论哪种情况,都可以将这些公式组合起来以消除工作单元,但得到的表达式将非常复杂并且难以理解和支持。
答案3
正常情况下一天只有 24 小时,因此 Excel 会重新从 0 开始计数 - 就像时钟一样。这是格式代码“hh:mm”,这是时间的默认格式
如果您想要查看累计超过 24 的小时数,则需要使用相应的格式代码:"[hh]:mm"
-小时周围的[
和]
使它们无限制计数。
请注意,这也适用于分钟 - 您可以将其用作"[mm]:ss"
永远计算分钟的格式代码。