Получение MAX () каждой строки с ARRAYFORMULA () - PullRequest
0 голосов
/ 06 июня 2019

Используя формулу массива, я хочу найти максимальное значение каждой строки диапазона и получить результирующий диапазон для дальнейшей работы с ним.

Проблема возникает, как только я добавляю оператор 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 Ответ

1 голос
/ 06 июня 2019
=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")

0

...