Excel =TIME() 的值超过 24 小时时显示不正确

Excel =TIME() 的值超过 24 小时时显示不正确

我尝试使用在 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"永远计算分钟的格式代码。

相关内容