2012-06-19 728 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)