我正在尝试使用多个条件返回计数。如果单元格中只有 1 条数据,则这不是问题,但我需要能够在一个单元格中添加一周中的多天,然后计算发生的所有引用。
这是迄今为止的公式
COUNTIFS(Data!$E:$E,">="&C$8,Data!$F:$F,"<="&C$9,Data!G:G,"="&$C$7,Data!H:H,"="&$C$6,Data!I:I,"Mon","Tue","Wed","Thu","Fri","Sat","Sun")
查看示例
答案1
有两个问题。
第一个是最后的内容。Excel 将其视为继续对“COUNTIFS”的“IFS”部分执行测试:它测试 I:I 中的字符串“Mon”,然后测试字符串“Tue”中的字符串“Wed”,依此类推。显然,这些测试(例如查看字符串“Thu”中是否有值“Fri”)毫无意义,并且会直接失败,从而导致您收到错误。即使 Excel 会进行测试,实际上比较字符串,这些测试在每种情况下都会失败,结果为零。
此外,即使更改该条件也无法解决问题,因为 Excel 的内部数组(新的 SPILL 数组除外)始终有长度限制。当它们达到这些限制时,它们就会结束。因此,基于整个列的数组并没有真正经过测试,因为它们结束得早,这使得它们只是字符串,而且是无法使用的字符串。(内部数组必须以右花括号“}”结尾,否则它们就不是数组。由于它们没有一直形成到最后,因此它们没有任何方式拥有该字符。因此,每个条件都会返回一个事实,即测试中没有一个成功,因此COUNTIFS()
结果为 0。(请记住,这只是在您修复了您想要的最后一个条件之后,但这四个条件都不起作用。)
修复整列问题很简单:不要使用整列。无论如何,这有点偷懒,但比有人向你宣扬这一点更重要的是,它在这里根本行不通。选择比你的数据更大的范围,这样你就有增长空间,看看情况如何。我试验了 30 行,效果很好。数千行也应该没问题。但不要超过一百万行……
不过,修复天数部分则是另一回事了。我不会深入讨论这个问题,因为这需要采用不同的方式输入数据,或者需要相当复杂的公式来提取输入的天数并将其与列表进行比较。
但是,进入列表...您似乎希望允许它们成为一周七天中的任何一天。那么...为什么要包含该条件/测试呢?除非那不是您真正想要的,在这种情况下,更清晰的解释可能会有所帮助。在我看来,您希望将 I 列数据中的天数与“8 月”和“Havant Station (Main)”上方显示的五天进行核对。有比我在上一段中提到的复杂工作更好的方法可以做到这一点,它只需要您将要检查的条件列表更改为略有不同但使用起来容易得多的形式。不过,您自己决定。如果您必须采用现在这种尴尬的方式,那么您必须这样做。但随后您必须做很多艰苦的工作。您的电子表格,所以总是您的决定。
我更喜欢简单。但是有一种中间方法,您可以将困难的工作放在命名范围内,然后在此公式中引用命名范围。因此,如果您选择困难路线,那么这将是困难的版本(因为它不那么困难!)。