如何使数组公式按行计算值?

问题描述 投票:0回答:3

我尝试了很多方法,但我似乎无法用数组公式找到一个相当简单的问题的解决方案:

我有一张表格,我可以按行获得某个科学实验运行的个别结果。 接下来,我想计算每个输出值的出现次数。输出值可以是 1 到 10 之间的数字,所以我想单独计算每个值的输出次数。

此外,我将总结总共生成了多少个单独的输出。所以我会计算一行中唯一输出的数量。

现在我的问题是,当以我通常使用它的方式使用

Arrayformula
时,它不起作用,因为它会计算并总结指定的整个矩阵的所有内容。但是,我只想计算当前行。我尝试使用
ROW
到达那里,但我失败了。 我也尝试了一些像
=ARRAYFORMULA(SUMIF(IF(COLUMN(B1:F1),ROW(B2:F5)),ROW(B2:F5),B2:F5))
这样的东西来理解如何应用逻辑,但我无法让它作为
COUNTIF
版本工作。

测试表

任何帮助和想法将不胜感激!

google-sheets count google-sheets-formula array-formulas countif
3个回答
1
投票

在H2中使用:

=INDEX(MMULT(IF(INDIRECT("B2:F"&MAX((ROW(A2:A)*(A2:A<>""))))=""; 0; 1); 
 FLATTEN(COLUMN(B:F)^0)))

在J2中使用:

=INDEX(ARRAY_CONSTRAIN(QUERY(QUERY({IFERROR(SPLIT(FLATTEN({ROW(A2:A)&"×"&B2:F}); "×")); 
 {SEQUENCE(10)*9^9\SEQUENCE(10)}}; 
 "select count(Col1),Col1 where Col2 is not null group by Col1 pivot Col2"); 
 "where Col11 < 100000 offset 1"; 0); 9^9; 10))


更新:

H1:

={"Total No. of outcomes"; ARRAYFORMULA(IFNA(VLOOKUP(ROW(A2:A); 
 QUERY(SPLIT(UNIQUE(FLATTEN(ROW(B2:F)&"×"&B2:F)); "×"); 
 "select Col1,count(Col1) where Col2 is not null group by Col1"); 2; 0)))}

J1:

=INDEX({"Occurence of "&SEQUENCE(1; 10); ARRAY_CONSTRAIN(QUERY(QUERY({IFERROR(
 SPLIT(FLATTEN({ROW(A2:A)&"×"&B2:F}); "×")); {SEQUENCE(10)*9^9\SEQUENCE(10)}}; 
 "select count(Col1),Col1 where Col2 is not null group by Col1 pivot Col2"); 
 "where Col11 < 999999 offset 1"; 0); 9^9; 10)})

演示表


1
投票

事后想想,我认为接受的答案是最佳的,但我确实想知道你是否可以只使用 countifs 来解决它。答案是肯定的,但你必须强制数组参数具有相同的大小和形状,否则你会得到“数组参数不同大小”的错误,所以在 J2 中:

=ArrayFormula(countifs(B2:F6,mod(sequence(5,10,0),10)+1,row(B2:F6)+B2:F6-B2:F6,int(sequence(5,10,0)/10)+2))

注意结果列的总数使用 H2 中的以下公式给出了不同结果的数量:

=ArrayFormula(mmult(sign(J2:S6),sequence(10,1,1,0)))


0
投票

要回答主题问题“How to make an arrayformula count values by row?”,而不是问题本身(上面已经回答过),您可以使用这样的公式:

=ArrayFormula(COUNTIF(IF(ISBLANK(B2:F),,A2:A),A2:A))

这将为从第 2 行开始的每一行计算 B 列和 F 列之间的值。

这部分公式

IF(ISBLANK(B2:F),,A2:A)
将数组
B2:F
中的每个值替换为A列中的值。它假设A列中的值是唯一的,因为它们在上面(第1轮,第2轮等)。

然后它会计算 A 列中每个值出现的次数,并为您提供每行的总数。

我意识到我不是在回答问题本身,但是当我在谷歌上搜索“array formula count values in row google sheets”时,这个页面是最佳答案,所以我正在回答主题问题以防其他人通过类似的搜索登陆此页面。

© www.soinside.com 2019 - 2024. All rights reserved.