![Суммировать несколько строк по одному условию](https://rvso.com/image/1606683/%D0%A1%D1%83%D0%BC%D0%BC%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D1%82%D1%8C%20%D0%BD%D0%B5%D1%81%D0%BA%D0%BE%D0%BB%D1%8C%D0%BA%D0%BE%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%20%D0%BF%D0%BE%20%D0%BE%D0%B4%D0%BD%D0%BE%D0%BC%D1%83%20%D1%83%D1%81%D0%BB%D0%BE%D0%B2%D0%B8%D1%8E.png)
Предположим, у меня есть следующая таблица на листемесяц:
И следующая таблица на листе__данные:
В листе__данныеЯ хотел бы просуммировать все значения из столбцов P, R, T, V и X для указанного названия категории.
Для одной строки я могу использовать следующую формулу: (например, cat6)
=IF(
SUMIF(month!$O$5:$O$34;__data!$A7;month!$P$5:$P$34)<>0;
SUMIF(month!$O$5:$O$34;__data!$A7;month!$P$5:$P$34);
"")
Теперь я считаю, что это должно быть возможно с помощью SUMPRODUCT
. Но я не могу понять, как это должно быть закодировано.
У меня есть формула СУММПРОИЗВ, но она приводит к #VALUE!
ошибке;
=SUMPRODUCT(
--(month!$O$5:month!$O$34=__data!$A7);
(
month!$P$5:month!$P$34 +
month!$R$5:month!$R$34 +
month!$T$5:month!$T$34 +
month!$V$5:month!$V$34 +
month!$X$5:month!$X$34)
)
Я полагаю, что это как-то связано со способом заполнения значений в P, R, T, V и X. Это делается с помощью следующей формулы;
=IF(SUMIF($B$5:$B$123;O8;$D$5:$D$123)<>0;SUMIF($B$5:$B$123;O8;$D$5:$D$123);"")
решение1
Вы можете легко сделать это с помощью одной формулы. Но вам нужен метод для возврата прерывистых столбцов.
- Я назвал таблицу данных
catTbl
так, чтобы на нее было легче ссылаться. - Найдите строку, используя
MATCH
функцию:=MATCH(A2,INDEX(catTbl,0,1),0)
- Категория находится в ячейке A2, и
INDEX
функция возвращает все строки в первом столбце.
- Категория находится в ячейке A2, и
- Функция построения
N(IF(1,{2,4,6,8,10})) will return the relevant columns to the
ИНДЕКС`. - Тогда просто
SUM
массив
Итак, вся формула:
=SUM(INDEX(catTbl,MATCH(A2,INDEX(catTbl,0,1),0),N(IF(1,{2,4,6,8,10}))))