在数组公式中使用 COUNTIFS

LWW*_*LWW 7 count google-sheets array-formulas google-sheets-formula

我正在尝试计算给定类型的某些内容发生的次数,并且我需要此行为自动扩展到插入的行。就像是:

=Arrayformula(COUNTIFS(I:I,I:I,H:H,H:H,G:G,G:G))
Run Code Online (Sandbox Code Playgroud)

当在单行上使用时,嵌套的 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
Run Code Online (Sandbox Code Playgroud)

...

x 列是数组公式的输出位置。

第 1 行的 X 应该查看所有数据并计算青苹果的数量eaten,下一行将计算noneaten橙子的数量,依此类推。我知道 arrayformula 不采用聚合函数,但我没有找到任何替代方案countif

Ada*_*amL 3

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