Я хочу СУММИТЬ несколько столбцов, но только для строк, СУММА которых > 0. Один из подходов, который работает, состоит в том, чтобы добавить дополнительный столбец, который, по сути, исключает строки, сумма которых равна <0, а затем просуммировать этот дополнительный столбец, как показано на снимке экрана ниже. Я хочу исключить вспомогательный столбец и создать единую формулу, основанную только на исходных данных, которая возвращает тот же результат. Я пытался включить FILTER() внутри SUMIF() и несколько других возможностей, но безрезультатно.
Примечание. Я использую O365 с поддержкой динамических массивов, если это поможет. Заранее спасибо.
Если я понимаю, что вы имеете в виду, использование функции MMult поможет преобразовать матрицу A2:C4
в E2:E4
, как вы говорите.
-Вы можете использовать функцию ПОЗВОЛИТЬ, если у вас есть Office365-Insider,
=LET(x,A2:C4,y,MMULT(x*1,SEQUENCE(COLUMNS(x))^0),SUM(y*(y>0)))
-Или отсутствует LET:
=SUM(MMULT(A2:C4*1,SEQUENCE(COLUMNS(A2:C4))^0)*(MMULT(A2:C4*1,SEQUENCE(COLUMNS(A2:C4))^0)>0))
Причина, по которой я использую x*1, заключается в том, чтобы избежать возможных ошибок, если вы оставите ячейку пустой.
@ dfunky1 вы можете попробовать LET с Excel Online, похоже, он доступен, за исключением лямбда-функции!
Спасибо! Мне потребовалось немного времени, чтобы переварить это, но я думаю, что понял. Однако я внес небольшую модификацию, чтобы сделать его пригодным для повторного использования с новыми данными; в основном ссылаются на столбцы вместо массива. =SUM(MMULT(A:C*1,SEQUENCE(COLUMNS(A:C))^0)*MMULT(A:C*1,SEQUENCE(COLUMNS(A:C))^0)>0))
В G2
введите формулу:
=SUMPRODUCT((MMULT(A2:C4,{1;1;1})>0)*MMULT(A2:C4,{1;1;1}))
Ух ты! У меня нет программы Insider, но, судя по тому, что я только что прочитал о LET(), она мне пригодилась.