Суммирование нескольких строк в Excel

Суммирование нескольких строк в Excel

Предположим, у меня есть следующая таблица:

(пока нельзя вставлять изображения)

Мне бы хотелось узнать общее количество проданных яблок в первый день, независимо от того, кому именно они были проданы.

Я немного знаком с этим, INDEX/MATCHно не совсем уверен, как действовать дальше.

Я понимаю, что SUMIFфункцию можно использовать для суммирования только нужного дня, но я не уверен, как с ее помощью суммировать несколько строк INDEX/MATCH.

Результат, который я ищу, следующий:

(это тоже не могу встроить)

Но самое главное, я хотел бы знатькак суммировать несколько определенных строки поэтому я прошуформула для B16.

решение1

Если у вас есть возможность разъединить ячейки в столбце A и нормализовать его, то простой вариант SUMIFSдолжен сработать. В противном случае попробуйте это:

=SUMPRODUCT($C$2:$C$13,
1*($B$2:$B$13=$A16),
1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15)),
1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1)))

Результат:

╔════════╦════╦════╗
║  Day   ║ 1  ║ 2  ║
╠════════╬════╬════╣
║ Apple  ║ 60 ║ 90 ║
║ Orange ║  0 ║ 85 ║
║ Pear   ║ 75 ║  0 ║
╚════════╩════╩════╝

Источник:

Изменил формулунайдено здесь:

Объяснение:

Основная часть — это SMALLфункция

SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15)

Он создает массив номеров строк для указанного диапазона, где ячейки, не содержащие ничего ( =""), имеют значение, которое на 100 больше соответствующего номера строки ( +100*). С другой стороны, ячейки, не соответствующие условию (т. е. непустые ячейки), получат только свои номера строк. Этот массив передается в функцию SMALLв B$15качестве второго аргумента, который сообщает ей, что нужно извлечьк-тнаименьший элемент в массиве.

Итак, мы хотим просуммировать строки, начинающиеся с номера дня, что и делает эта часть:

1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15))

Однако мы также хотим ограничить суммирование до ячейки, расположенной непосредственно над следующей непустой ячейкой; следовательно, оператор <и B$15+1(т.е.(к+1)-йнаименьший элемент) в следующей части:

1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1))

решение2

Если вы можете разделить ячейки для вашего Dayполя так, чтобы номер дня появился в каждой строке,Сводная таблицабудет самым простым способом получить требуемый вам результат:

Вращаться

Связанный контент