奇怪的公式行为

时间:2016-11-17 12:46:33

标签: google-sheets

我希望有人可以帮助解决这个问题。首先是一些背景。

这是我遇到问题的电子表格的简化版本的链接。设置为仅查看,但您可以将其复制到播放。

https://docs.google.com/spreadsheets/d/1RRhvC3wk4FK5Hcb2LatK62sguS95ssxqGPHsnNQRDRM/edit?usp=sharing

工作表的目的是跟踪工人每天工作的开始和结束时间,并显示每天的总数。工作表(计划员)分为部门/部门。 C列和第4行和第4行5在正常使用中隐藏。

观察第一周,2017年1月15日,第1部分之后的总数如预期一样正确。 “总早期”行显示所有在第4行的相应列中显示的时间之前或之前具有开始时间的工作人员的计数。“总晚期”行显示所有结束时间为或等的工作人员的计数在第5行相应列中显示的时间之后或之后。行总日,显示当天有多少工人进入的计数,无论他们何时开始和结束。

观察第二周,2017年1月22日,这是开始变得有趣的地方。周日,周一,周四,周五和周六的计数是正确的。星期二和星期三的总延迟计数包括计数中的文本条目。这可以通过验证框中的几个选项进行,但不是全部。奇怪!

从2017年12月10日开始的一周,它变得更加有趣!总早期计数完全搞砸了显示0(零)和总延迟计数更是如此,显示9,恰好是范围内的细胞数量,它的公式相同,为什么不同的行为?!

这些细胞中使用的公式经历了多次迭代,但具有相同或相似的结果。我完全被这个难倒,所以任何人都可以给予的任何帮助都会感激不尽。

如果您有任何疑问或需要更多信息,请与我们联系。 感谢。

1 个答案:

答案 0 :(得分:1)

将某些文本条目计为晚期

这是由于您如何判断某人是否迟到的方式。

=MID(Q14, 7, 5)会产生y。几乎任何编程语言都会将字母字符解释为“更大”。比数字,ergo y > 20:00

避免这种情况的一种简单方法是安全地提取起始时间然后运行比较。

=ArrayFormula(SUM(--(IFERROR(REGEXEXTRACT(Q7:Q16, "(\d\d:\d\d)$"), "")>$Q$5))))

在12月搞砸计数

此处您的时间实际上是一个Excel时间戳,如果您将显示更改为Number,您将看到0.380.88

这是因为Data中的延长开放时间被格式化为时间戳。只需将格式更改为文本即可,而另一种方法是将开始和结束时间解析为时间戳。