【问题标题】:Getting MAX() of each row with an ARRAYFORMULA()使用 ARRAYFORMULA() 获取每行的 MAX()
【发布时间】:2019-06-06 10:11:14
【问题描述】:

使用数组公式,我想找到一个范围内每一行的最大值并得到结果范围以进一步使用它。

我添加MAX() 语句后,问题就出现了,因为它在数组公式中的行为似乎很奇怪。即使您在MAX() 语句中添加了会为您提供多个值的命令,它也总是只返回一个值。

例如这将为您提供我想要获得最大值的范围:

=ARRAYFORMULA(ADDRESS(ROW(E1:E11); COLUMN() + 1; 4) & ":" & ADDRESS(ROW(E1:E11); COLUMN() + 4; 4))

结果如下所示:

F1:I1
F2:I2
F3:I3
F4:I4
F5:I5
F6:I6
F7:I7
F8:I8
F9:I9
F10:I10
F11:I11 

如果我现在添加 INDIRECT() 以使它们成为实际范围并添加 MAX() 它应该返回每个范围的最大值,因为数组公式应该像以前一样通过 ROW(E1:11)。然而,这个新公式的结果

=ARRAYFORMULA(MAX(INDIRECT(ADDRESS(ROW(E1:E11); COLUMN() + 1; 4) & ":" & ADDRESS(ROW(E1:E11); COLUMN() + 4; 4))))

而是一个单一的值,第一个范围的最大值。

我什至试图通过为数组公式添加一个IF() 语句来遍历行来绕过这个问题。这样做,它确实给了我所有 11 行的结果,但是,结果总是相同的(第一行的最大值)。

新公式:

=ARRAYFORMULA(IF(ROW(E1:E11) = ROW(E1:E11); MAX(INDIRECT(ADDRESS(ROW(E1:E11); COLUMN() + 1; 4) & ":" & ADDRESS(ROW(E1:E11); COLUMN() + 4; 4))); ""))

新结果(左列是公式的结果,试图让每一行的最大值在它的右边):

10  7   10  4   1
10  10  8   1   2
10  4   5   9   4
10  10  10  2   2
10  10  10  5   10
10  10  6   9   5
10  4   5   7   3
10  6   9   4   7
10  5   5   7   3
10  9   2   3   10
10  10  3   9   10

【问题讨论】:

    标签: regex google-sheets google-sheets-formula array-formulas google-sheets-query


    【解决方案1】:
    =QUERY(TRANSPOSE(QUERY(TRANSPOSE(F1:I), 
     "select "&REGEXREPLACE(JOIN( , ARRAYFORMULA(IF(LEN(F1:F&G1:G&H1:H&I1:I), 
     "max(Col"&ROW(F1:F)-ROW(F1)+1&"),", ""))), ".\z", "")&"")),
     "select Col2")
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多