У меня есть формула, которая генерирует результат двухмерного массива. Например:

{=ROW(4:6)^TRANSPOSE(ROW(1:3))}

(фигурные скобки добавляются в Excel при нажатии клавиш CTRL+SHIFT+ENTER )

Мне нужно суммировать только горизонтальные элементы массива (тогда я определю максимум этих сумм).

Если я попробую:

{=SUM(ROW(4:6)^TRANSPOSE(ROW(1:3)))}

Я получаю общую сумму, но мне нужна формула массива, которая генерирует результат массива, содержащий (вертикальный) столбец суммы каждой строки. Я представляю что-то вроде:

{=HORIZONTALSUM(ROW(4:6)^TRANSPOSE(ROW(1:3)))}

Который в моем простом примере содержал бы вертикальный массив (24; 30; 36). Тогда я мог бы легко получить максимум с помощью:

{=MAX(HORIZONTALSUM(ROW(4:6)^TRANSPOSE(ROW(1:3))))}

И вернуть 36, как в моем примере.

Я понимаю, что мог бы написать UDF, чтобы сделать это легко, но UDF недостаточно переносимы, поэтому я ищу нативное решение.

1 ответ1

1

Делает ли это то, что вы хотите?

=MAX(ROW(4:6)*SUM(ROW(1:3)))

подтвердить нажатием CTRL+SHIFT+ENTER

Если вы суммируете второй массив, вы можете использовать его для умножения первого массива, потому что это будет то же самое, что умножение значений по отдельности и затем суммирование результатов

Редактировать: учитывая ваши комментарии, если исходный массив фиксирован, то вы можете использовать функцию MMULT как это

=MAX(MMULT(ROW(4:6)*TRANSPOSE(ROW(1:3)),{1;1;1}))

{1;1;1} изменится, учитывая количество столбцов в первом массиве

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .