【问题标题】:Finding the maximum of minimum values找到最小值的最大值
【发布时间】:2012-06-21 02:01:49
【问题描述】:

我想计算大于 0 的电子表格(特别是 Google 表格)中每一行的最小值的最大值。我希望这是有道理的。我的数据是:

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 步解决方案。

【问题讨论】:

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


    【解决方案1】:

    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】:

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

      【讨论】:

        【解决方案3】:

        除了获取每行的最小值(允许一次性输出一个数组),试试:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-02-26
          • 2012-05-05
          • 1970-01-01
          相关资源
          最近更新 更多