1

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

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

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

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

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

Вывод, который я ищу, выглядит следующим образом:

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

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

2 ответа2

1

Если у вас есть возможность снять ячейки в столбце А и нормализовать их, тогда простые 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))
0

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

стержень

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