Google sheets 在数组公式中使用COUNTIFS

Google sheets 在数组公式中使用COUNTIFS,google-sheets,count,google-sheets-formula,array-formulas,Google Sheets,Count,Google Sheets Formula,Array Formulas,我试图计算给定类型的事件发生的次数,我需要这种行为自动扩展到插入的行。比如: =Arrayformula(COUNTIFS(I:I,I:I,H:H,H:H,G:G,G:G)) 嵌套的countif公式在单行上使用时将产生正确的值,但当前数组公式一直向下输出1 我的数据类似于: Column1 Column2 Column3 Result -------------------------------------------- apple green

我试图计算给定类型的事件发生的次数,我需要这种行为自动扩展到插入的行。比如:

=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应该查看所有数据,并统计吃下的青苹果的数量,下一行将统计不吃的橙子,依此类推。我知道arrayformula不接受聚合函数,但我没有找到任何关于
countif

的替代方法。不幸的是,在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);)))

但是请注意,在图纸中似乎存在一个限制,即由G:G=转置(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)是一个制表符,但它可以是您确定不会出现在数据中的任何字符。

我对Google Sheets了解不多,但在Excel中,如果我理解正确,这不需要是数组公式。简单地复制非数组版本就足够了,尽管我个人不喜欢使用这种交集方法(也许这在Google Sheets中无效?),所以我更喜欢=COUNTIFS(I:I,I2,H:H,H2,G:G,G2)我忘了提到它需要是开放式列的原因是因为这是在计算表单的输出,它会为每个提交插入一个新行。谢谢,但是我无法得到结果,你能详细说明实际发生了什么吗?不管怎样,3162行的限制可能会破坏交易。下面是一个电子表格,它试图解释:也进行了编辑以提供另一个选项(我在ss中测试了MMULT,尽管有我提到的限制,但它似乎仍然有效)。你能解释一下这句话吗:“COUNTIFS不能像COUNTIF一样在数组上迭代”?这是谷歌表单特有的吗?或者它也适用于Excel?如果是这样,你能举一个很小的例子来说明你的意思吗?@XORLX,好问题,并为没有具体说明而道歉。在这个例子中,我实际上只是在谈论谷歌工作表(实际上,OP删除
excel
标记可能是合适的)。在工作表中,您可以在COUNTIF的第二个参数中输入一个范围(或计算数组),作为数组公式调用,然后将自动生成一个数组输出,其中该范围中的每个元素都是“countifed”。COUNTIFS中的第二个(和第四个、第六个等)参数也不能这样做(原因未知)。(待定)