Google sheets 在Google工作表中先按列再按行聚合,而不添加列
我希望对每行中的列应用聚合函数,然后对结果应用另一个聚合,而不向表中添加仅计算列。有可能吗Google sheets 在Google工作表中先按列再按行聚合,而不添加列,google-sheets,sum,google-sheets-formula,array-formulas,google-sheets-query,Google Sheets,Sum,Google Sheets Formula,Array Formulas,Google Sheets Query,我希望对每行中的列应用聚合函数,然后对结果应用另一个聚合,而不向表中添加仅计算列。有可能吗 例如,考虑下表: A B C D 1 Items Property1 Property2 Property3 2 Item1 Y Y 3 Item2 Y 4 Item3 Y 5 Item4 Y Y Y 此
例如,考虑下表:
A B C D
1 Items Property1 Property2 Property3
2 Item1 Y Y
3 Item2 Y
4 Item3 Y
5 Item4 Y Y Y
此处Y(是)表示项目具有给定属性
我想计算至少有2个属性的项目数。在这种情况下,它应该是2(项目1和项目4)。我可以将列E添加到表中,如下所示:
Number of properties
COUNTIF(B2:D2, "Y")
COUNTIF(B3:D3, "Y")
COUNTIF(B4:D4, "Y")
COUNTIF(B5:D5, "Y")
并对其应用COUNTIF(E2:E5,“>2”)
。但这需要在表中添加一列,这是我想要避免的
当我破解时,我最终使用了MMULT,比如:
=ARRAYFORMULA(COUNTIF(MMULT({if(B2:D5<>"", 1, 0)}, {1;1;1}), ">=2"))
=ARRAYFORMULA(COUNTIF(MMULT({if(B2:D5',1,0)},{1;1;1}),“>=2”))
在这里,公式将Y和空格替换为1和0,然后使用矩阵乘法计算每行中的1个数,然后使用至少2个属性计算结果行中的单元格数。但这感觉像是一个丑陋的黑客,正好在我的情况下工作
有没有一种通用的方法可以通过独立的聚合函数先按列再按行进行这种双重聚合 实际上,您的公式:
=ARRAYFORMULA(COUNTIF(MMULT({IF(B2:D="Y", 1, 0)}, {1;1;1}), ">=2"))
在现场,除非由于某些未提及的原因,您更愿意避免MMULT
另一种选择是:
=ARRAYFORMULA(COUNTIF(LEN(SUBSTITUTE(
TRANSPOSE(QUERY(TRANSPOSE(B2:D),,99^99)), " ", )), ">=2"))
您想要的输出是什么?一个包含数字的单元格。转置和查询的技巧很好,可以推广到其他无法用mmult轻易破解的情况。