我试图计算给定类型的某些内容发生的次数,我需要这种行为来自动扩展到插入的行。类似的东西:
=Arrayformula(COUNTIFS(I:I,I:I,H:H,H:H,G:G,G:G))
嵌套的countif公式在单行上使用时会产生正确的值,但目前数组公式输出为1。
我的数据类似于:
Column1 Column2 Column3 Result
--------------------------------------------
apple green eaten x
orange orange noteaten x
apple red eaten x
orange orange noteaten x
apple green eaten x
...
x列是arrayformula输出的位置。
第1行的X应查看所有数据,并计算绿苹果的数量eaten
,下一行将计算noneaten
橙子橙,依此类推。我知道arrayformula没有采用聚合函数,但我没有找到关于countif
的替代函数的任何内容。
答案 0 :(得分:1)
不幸的是,在Google表格中,COUNTIFS无法在数组上进行迭代,例如COUNTIF可以(无论如何,在写这篇文章的时候)。
您需要诉诸MMULT,例如:
=ArrayFormula(IF(ROW(G:G)=1,"Result",MMULT((G:G=TRANSPOSE(G:G))*(H:H=TRANSPOSE(H:H))*(I:I=TRANSPOSE(I:I)),SIGN(ROW(G:G)))))
但请注意,Sheets似乎存在限制,其中由G:G = TRANSPOSE(G:G)等形成的2D阵列不能超过1000万个元素。这相当于最多3162行。
另一个选择是使用字符串串联:
=ArrayFormula(COUNTIF(G:G&CHAR(9)&H:H&CHAR(9)&I:I,G:G&CHAR(9)&H:H&CHAR(9)&I:I))
绕过" 3162"局限性。 CHAR(9)是一个制表符,但它可以是您确定不会出现在数据中的任何字符。