我尝试了很多方法,但我似乎无法用数组公式找到一个相当简单的问题的解决方案:
我有一张表格,我可以按行获得某个科学实验运行的个别结果。 接下来,我想计算每个输出值的出现次数。输出值可以是 1 到 10 之间的数字,所以我想单独计算每个值的输出次数。
此外,我将总结总共生成了多少个单独的输出。所以我会计算一行中唯一输出的数量。
现在我的问题是,当以我通常使用它的方式使用
Arrayformula
时,它不起作用,因为它会计算并总结指定的整个矩阵的所有内容。但是,我只想计算当前行。我尝试使用ROW
到达那里,但我失败了。
我也尝试了一些像 =ARRAYFORMULA(SUMIF(IF(COLUMN(B1:F1),ROW(B2:F5)),ROW(B2:F5),B2:F5))
这样的东西来理解如何应用逻辑,但我无法让它作为 COUNTIF
版本工作。
任何帮助和想法将不胜感激!
在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)})
要回答主题问题“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”时,这个页面是最佳答案,所以我正在回答主题问题以防其他人通过类似的搜索登陆此页面。