Excel中计算工作时间和工作超时时间的奇怪行为。

为了统计我的工作时间,我编写了下一个工作表。

工作时间工作表 通过互联网提出的其他解决scheme将不起作用,因为每天的工作时间数量不是固定的。 当“总工时”等于“正常工作时间”时,问题有时会出现。 当我尝试使用条件来格式化超时时间单元格时,我没有得到正确的结果。 平等似乎并非如此。 有条件的格式

单元格K9:负值或非常大的date和时间值显示为井号(###)

以下信息很重要:

  1. 单元格A4:B500,F4,F5格式如下:13:30小时
  2. 单元格J7:R9格式如下:Custom [h]:mm
  3. J7:= SUM($ C4:$ C34)和分别单元格K7,L7 …
  4. J8:= J4 * $ F $ 5和分别单元格K8,L8 …
  5. J9:= IF(J $ 7> = J $ 8; J $ 7-J $ 8; J $ 8-J $ 7)和分别单元格K9,L9 …

我想知道为什么发生这种情况,如果有解决scheme或不同的方法。

在Excel中执行math运算时,有时会出现浮点错误。 他们是因为Excel限制在15位精度以下,因此15位以后的有效数字被忽略。

Excel中的时间都是天数的百分比。 计算机以二进制计算,因此在math运算之前,所有这些小数必须转换为二进制,结果必须转换回十进制。

例如,像二进制的简单的0.1就像十进制的Pi,它不是一个有限的数字。

对这些转换后的数字进行math运算,会出现舍入误差。

如果将K9的格式更改为常规,则可能会发现这是一个以科学记数法表示的非常小的负数。

将K9中的结果舍入到大于4的值以允许一天1440分钟,应该排除错误。

好吧,我认为自己在我的陈述中得到了适当的纠正,即重复的加法应该给出和乘法相同的答案。 我只是想说,这是确定性的(同样的计算应该给出相同的答案),但它出错了。

所以乘法和加法很可能是差异的原因,但也可能来自于时间常数的定义和后来的结合,就像你在这个演示中看到的那样:

在这里输入图像说明

B6的最后一个小数位不同于B8,所以相等性testing失败。

这是在Excel 2007中:我无法重现Excel 2003或Excel 2010中的行为。