我有一张(演讲、地点、时间段)三元组的表格,旁边还有一列,表示该组合是否应成为日程安排的一部分。它看起来如下
讲话 | 会场 | 时间段 | 安排好了没? |
---|---|---|---|
Python | 阿斯彭 | 9 | |
Python | 阿斯彭 | 10 | 1 |
Python | 阿斯彭 | 11 | |
Python | 马德罗纳 | 9 | 1 |
... | ... | ... | ... |
js | 冷杉 | 9 | |
js | 冷杉 | 10 |
我为每一列指定了一个命名范围,以便于阅读公式。该Scheduled?
列称为X
。
我尝试使用公式来回答诸如“上午 9 点‘python’ 安排在什么地方?”之类的问题。我有几个我认为应该等价的构造,但只有其中一部分能给出正确答案。
上午 9 点在什么地方安排了“python”? | 公式 |
---|---|
0 | =SUMIF((talk = "python") * (timeslot = 9), ">= 1", X) |
1 | =SUMIFS(X, 对话, "python", 时间段, 9) |
0 | =SUM(X * (talk = "python") * (timeslot = 9)) |
0 | =COUNT(FILTER(X, talk = "python", timeslot = 9, X)) |
1 | =COUNTIFS(talk, "python", 时间段, 9, X, 1) |
我期望答案是1
,这是由SUMIFS
和COUNTIFS
公式给出的。其他的我做错了什么?或者我在哪里误解了公式的工作原理?
下面是一个 Google Sheet,其中有一个小数据集重现了该问题:SUMIF vs SUMIFS。
正如 Pb 所建议的
SUMIF
,、SUM
和COUNT
无法像当前编写的那样工作,因为这些函数不接受数组作为输入。您必须将条件包装在ARRAYFORMULA
函数中(在 Google 表格中),以便 Google 表格可以正确地将单元格范围转换为数组。Excel 中的某些函数是动态数组公式(太长了,无法在此答案中讨论)。在 Google 表格中,您必须使用ARRAYFORMULA
来获取动态数组。以下是使用重写的公式ARRAYFORMULA
:此处复制包含公式的 Google Sheet 。