Если у вас есть возможность снять ячейки в столбце А и нормализовать их, тогда простые 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
в качестве второго аргумента, который сообщает ему, чтобы он выбрал k-й наименьший элемент в массиве.
Итак, мы хотим суммировать строки, где строка начинается с номера дня, что и делает эта часть:
1*(ROW($A$2:$A$13)>=SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15))
Тем не менее, мы также хотим ограничить суммирование до ячейки непосредственно над следующей непустой ячейкой; следовательно, оператор <
и B$15+1
(т. е. (k+1) -й наименьший элемент) в следующей части:
1*(ROW($A$2:$A$13)<SMALL(ROW($A$2:$A$13)+100*($A$2:$A$13=""),B$15+1))