我想计算每一行的电子表格中的最低值的最大值(谷歌表,特别是)大于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。如果没有很好的解决办法,我会考虑以某种方式重新安排我的资料,或计算最小值在不同的细胞,但我真的希望有一个1级的解决方案。
最大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...
将其更改为得到不同的结果(最大,最小,SUM,AVG,一些calculatrions等)
如果有人想探索的公式,这里的工作与的分步解决方案。
在范围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)
除了获得每行的最小值(允许一气呵成的阵列输出),尝试:
=index(ArrayFormula(transpose(query(transpose(if(A:C>0, A:C,)),"select "&join("),","min(Col"&row(indirect("A1:A"&count(A:A))))&")"))),,2)