【问题标题】:Strange behavior in Excel when counting Work Hours and Work Super Hours.计算工作时间和超级工作时间时 Excel 中的奇怪行为。
【发布时间】:2015-06-03 19:15:11
【问题描述】:

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

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

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

以下信息很重要:

  1. 单元格 A4:B500、F4、F5 的格式如下:Hour 13:30
  2. 单元格 J7:R9 的格式如下:自定义 [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...

我想知道为什么会发生这种情况以及是否有解决方案或不同的方法。

【问题讨论】:

  • 细胞 I9、M9、N9、O9、P9 和 Q9 都可以。单元格 J9、K9 和 L9 应为绿色,值为“0:00”。
  • 感谢您的快速响应。看来你有道理。这对我来说还不够清楚。

标签: excel excel-formula


【解决方案1】:

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

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

例如,像二进制中的 0.1 这样简单的东西就像十进制中的 Pi - 它不是有限数。

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

如果你把K9的格式改成General,你可能会发现它是一个用科学计数法表示的非常小的负数。

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

【讨论】:

  • 很好的解释。话虽如此,如果您将 8 乘以 19 或将其相加 19 次,即使 8 小时不是一个精确的二进制数,您也应该得到相同的答案。我认为麻烦来自 C 列的(非常难以阅读)公式,其中涉及 B10-A10-$F$4 - 由于答案中解释的原因,这只会与 8 小时大致相同。
  • @TomSharpe 8 和 19 返回有限的二进制数。当你超过小数点时,它变得不确定。
  • 如果你将 8 乘以 19 或相加 19 次,即使 8 小时不是一个精确的二进制数,你也应该得到相同的答案答案是否定的,并且这就是为什么 OP 在 K9 中得到负数
  • 谢谢@MarkFitzgerald。情况确实如此。将“总工作时间”和“正常工作时间”四舍五入到小数点后 5 位,即可解决问题。
  • 好的,我可能对加法和乘法有误,但对错误的来源是正确的 - 稍后会发布演示。
【解决方案2】:

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

因此,乘法与加法很可能是造成差异的原因,但也可能来自定义时间常数并随后组合的方式,正如您从这个演示中看到的那样:-

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

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

【讨论】:

    猜你喜欢
    • 2021-07-09
    • 2021-10-09
    • 1970-01-01
    • 2018-08-16
    • 2023-03-30
    • 2019-01-11
    • 2015-08-14
    • 2011-03-24
    • 2017-06-30
    相关资源
    最近更新 更多