Используя формулу массива, я хочу найти максимальное значение каждой строки диапазона и получить результирующий диапазон для дальнейшей работы с ним.
Проблема возникает, как только я добавляю оператор 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