2012-06-19 351 views
2

我想计算电子表格(特别是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

最大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... 

变化如果有人想探索它来得到不同的结果(最大,最小,SUM,AVG,一些calculatrions等)

公式,这里的worksheet与分步解决方案。

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) 
0

除了获得每行的最小值(允许一气呵成的阵列输出),尝试:

=index(ArrayFormula(transpose(query(transpose(if(A:C>0, A:C,)),"select "&join("),","min(Col"&row(indirect("A1:A"&count(A:A))))&")"))),,2)