在数组公式中使用CountIF

时间:2015-03-23 04:23:53

标签: google-sheets spreadsheet

我试图计算给定类型的某些内容发生的次数,我需要这种行为来自动扩展到插入的行。类似的东西:

=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的替代函数的任何内容。

1 个答案:

答案 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)是一个制表符,但它可以是您确定不会出现在数据中的任何字符。