【问题标题】:Strange formula behaviour奇怪的公式行为
【发布时间】:2016-11-17 12:46:32
【问题描述】:

我希望有人可以帮助解决这个问题。先介绍一下背景。

这是我遇到问题的电子表格精简版的链接。设置为仅查看,但您可以复制它来玩。

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

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

查看第一周,即 2017 年 1 月 15 日,第 1 节之后的总数都如预期的那样正确。 Total Early 行显示开始时间在第 4 行相应列中显示的时间之前或之前的所有工作人员的计数。Total Late 行显示结束时间为在第 5 行相应列中显示的时间或之后。总天数行显示当天有多少工人在工作,无论他们何时开始和结束。

从 2017 年 2 月 1 日的第二周开始,这就是开始变得有趣的地方。周日、周一、周四、周五和周六的计数是正确的。周二和周三的总迟到计数包括计数中的文本条目。验证框中的几个选项会发生这种情况,但不是全部。奇怪的!

从 2017 年 10 月 12 日开始的一周来看,它变得更加有趣! Total Early 计数完全搞砸了,显示 0(零),Total Late 计数更是如此,显示 9,这恰好是该范围内的单元格数,它的公式相同,那么为什么会有不同的行为?!

这些单元格中使用的公式经过多次迭代,但结果相同或相似。我完全被这个难住了,所以任何人都可以提供的帮助将不胜感激。

如果您有任何问题或需要更多信息,请告诉我。 谢谢。

【问题讨论】:

    标签: google-sheets


    【解决方案1】:

    将一些文本条目计数为晚

    这是由于您确定某人是否迟到的方式。

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

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

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

    12 月的计数搞砸了

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

    这是因为 Data 中延长的开放时间被格式化为时间戳。只需将格式更改为文本就可以了,另一种方法是将打开和关闭时间解析为时间戳。

    【讨论】:

      猜你喜欢
      • 2022-01-20
      • 2014-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多