使用ARRAYFORMULA()获取每一行的MAX()

时间:2019-06-06 10:11:14

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

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

该问题在我添加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

1 个答案:

答案 0 :(得分:1)

open System.Linq

let fetchStream<'T> (session: IDocumentSession) (id: Guid) =
    let stream = session.Events.FetchStream(id)
    stream
    |> Seq.map(fun x -> x.Data)
    |> Enumerable.OfType<'T>

0