【问题标题】:Rounding error in SECOND function when converting hh:mm:ss.000 to milliseconds in Excel?在 Excel 中将 hh:mm:ss.000 转换为毫秒时 SECOND 函数中的舍入错误?
【发布时间】:2020-03-06 02:19:15
【问题描述】:

我正在尝试编写一个函数,使用以下函数将以 [hh]:mm:ss.000 格式输入的时间列转换为毫秒:

=MINUTE(C75)*60000+SECOND(C75)*1000+RIGHT(TEXT(C75, "hh:mm:ss.000"),3)

通过使用计算器处理数字,我推断出问题在于 SECOND() 函数基于毫秒舍入到最接近的秒数,而不是复制确切的值。例如,00:17:39.320 会正确转换,但 00:17:39.760 不会,因为该函数将使用 40 而不是 39 转换秒。

有人知道解决方法吗?

谢谢!

【问题讨论】:

  • 那么不要使用Second。使用右 6 个字符 × 1000
  • 感谢您的建议。我的数字格式可能有问题,因为这也不起作用也不能正常工作。我使用了格式 [hh]:mm:ss.000;@。当我键入值时,单元格看起来正确,但是当我单击它时,Excel 会将时间转换为公式栏中的 hh:mm:ss AM/PM,并在我单击离开时更改单元格中的值。你知道如何解决这个问题吗?
  • Excel 对毫秒分辨率的时间支持不完整。许多(大多数?)时间函数只能工作到秒。 Jim 建议使用基础数值可能是最好的。然后,您将面临与 Excel 渴望“帮助”重新格式化单元格的斗争!

标签: excel rounding milliseconds seconds rounding-error


【解决方案1】:

将你的时间乘以 86400000

=C75 * 86400000

Excel 将时间存储为日期的一部分。中午 12:00 将是 0.5,因为它是 24 的一半。因此,24 小时乘以 60 分钟乘以 60 秒可以得到总秒数乘以 1000 毫秒得到您想要的结果。

【讨论】:

  • 这将给出正确的数字,但它以这种格式出现:593360:00:00.000(其中 593360 是正确的毫秒数)。如果我将格式更改为数字或一般格式,则计算将不再正确完成。你知道这是为什么吗?
  • 尝试格式化为带有 0 位小数的会计或数字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-28
  • 2018-11-29
  • 2021-05-09
  • 2019-03-22
  • 1970-01-01
  • 2021-10-09
  • 2012-02-20
相关资源
最近更新 更多