找到最小值的最大值

时间:2012-06-19 03:38:32

标签: google-sheets max aggregate min array-formulas

我想计算电子表格(特别是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。如果没有很好的解决方法,我会考虑以某种方式重新排列我的数据,或者在单独的单元格中计算最小值,但我真的希望有一步解决方案。

3 个答案:

答案 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

enter image description here

您需要的只是单元格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)