使用数组公式,我想找到一个范围的每一行的最大值,并得到结果范围以进一步处理它。
该问题在我添加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