在Google表格中查询串联数组

伊戈尔·布卡诺夫(Igor Bukanov)

我正在尝试对结合{}的几个范围进行查询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)

但是有可能避免使用这种人造柱吗?

玩家0

IF除非使用,否则仅返回1个单元格ARRAYFORMULA因此错误就在现场,因为一侧有4个单元,另一侧有1个单元。

尝试:

=ARRAYFORMULA(QUERY({B:B, IF(C:C="green", 1, 0)}, 
 "select Col1,sum(Col2) 
  where Col1 is not null 
  group by Col1 
  label sum(Col2)''", 0))

0

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章