【发布时间】:2020-03-18 11:11:31
【问题描述】:
我正在尝试针对多个结合了 {} 的范围运行查询,例如 query({A2:C5, if(C1:C5='something',1,0)}, "select ...")。但我得到了一个#REF!错误消息Function ARRAY_ROW parameter 2 has mismatched row size. Expected: 4. Actual: 1. 这是什么原因?
这里有一个详细的例子。假设我有一张这样的桌子:
id kind color
1 a green
2 a green
3 b green
4 c blue
我想要一个表格,显示每种类型的绿色单元格数量:
kind color_count
a 2
b 1
c 0
最初,我尝试使用 where 子句进行查询:
=query(A2:C5, "select B, count(C) where C='green' group by B", -1)
但这不包括零值的行。所以我尝试添加一个额外的列,其值为 1 为绿色,否则为 0,并在没有 where 子句的情况下使用 SUM:
=query({A2:C5, if(C2:C5="green", 1, 0)}, "select B, sum(D) group by B", -1)
但这给出了上面的 $REF!
作为一种解决方法,我使用公式在表格中添加了 D 列
=arrayformula(if(C2:C5="green", 1, 0))
然后下面的查询会起作用并给出想要的结果:
=query(A2:D5, "select B, sum(D) group by B", -1)
但是有没有可能避免这种人为的列?
【问题讨论】:
标签: if-statement google-sheets google-sheets-formula array-formulas google-sheets-query