我想计算电子表格(特别是Google表格)中每行最小值的最大值,大于0.我希望这是有意义的。我的数据是:
0 6 7 8 1
0 12 21 22 21
0 10 18 24
0 7 9 1 17
0 16 16 20
所以,我想要一种会生成的ArrayFormula:
1
12
10
1
16
然后我可以获得最大值。我已经阅读并体验到明显的解决方案不起作用,即:
=max(ArrayFormula(min(if(A:Z>0,A:Z,"")))
原因是它的ArrayFormula(min(...
部分返回大于0的整个数据集的最小值,这里是1。如果没有很好的解决方法,我会考虑以某种方式重新排列我的数据,或者在单独的单元格中计算最小值,但我真的希望有一步解决方案。
答案 0 :(得分:0)
数据在A1:E5范围内,在F1中并向下复制:
=if(small(A1:E1,1)=0,small(A1:E1,2),small(A1:E1,1))
或
=ArrayFormula(min(if(A2:E2>0,A2:E2,"")))
应该返回每行大于0的最小值,其最大值可以用:
计算=max(F1:F5)
答案 1 :(得分:0)
max ArrayFunction不存在,所以唯一的方法是解决方法。假设您有一些范围为A1:C5
的数字。结果范围是D1:D5
:
您需要的只是单元格D1
中的单个公式:
=QUERY(QUERY({ArrayFormula(REGEXEXTRACT(TRANSPOSE(SPLIT(ArrayFormula(CONCATENATE(row(A1:C5)&"*"&A1:C5&"/")),"/")),"\d+")),ArrayFormula(REGEXEXTRACT(TRANSPOSE(SPLIT(ArrayFormula(CONCATENATE(row(A1:C5)&"*"&A1:C5&"/")),"/")),"[*](\d+)")*1)},"select Col1, min(Col2) where Col2 <>0 group by Col1 label min(Col2) ''"),"select Col2")
小心,它可以缓慢工作。
公式的主要部分是查询:
select Col1, min(Col2) where Col2 <>0 group by Col1...
更改它以获得不同的结果(最大,最小,总和,平均,一些计算等)
如果有人想要探索公式,可以使用逐步解决方案来worksheet。
答案 2 :(得分:0)
除了获得每行的最小值(允许一次输出数组)之外,请尝试:
=index(ArrayFormula(transpose(query(transpose(if(A:C>0, A:C,)),"select "&join("),","min(Col"&row(indirect("A1:A"&count(A:A))))&")"))),,2)