У меня есть лист data
с несколькими размерами примерно так:Excel Conditional SUMPRODUCT/СУММЕСЛИМН/Массив Формула для дополнительного измерения
A B C D E
1 COUNTRY FLAVOUR SIZE DATE SALES ($)
2 Japan Strawberry 100ml 10/12/14 100
3 Japan Banana 100ml 10/03/15 100
4 China Orange 200ml 14/04/15 30
5 France Strawberry 200ml 11/04/15 400
6 UK 200ml 23/04/15 250
7 ....
Я хочу объединить эти данные по диапазону дат, где summary
лист имеет каждый размер (страна &), и если я не укажу размер, он суммирует все строки для этого измерения.
A B C
1 COUNTRY FLAVOUR SALES TOTAL
2 Japan Strawberry 100
3 Japan 200
4 Strawberry 500
Я могу это сделать, если все размеры присутствуют (т.е. строка 2 выше) с использованием SUMPRODUCT или SUMIFS:
=SUMPRODUCT((data!A$2:A$100=A1)*(data!B$2:B$100=B1)*(data!D$2:D$100>[start_date]*(data!D$2:D$100<[end_date])*(data!E$2:E$100))
Однако я не был в состоянии выяснить, как включить все строки для измерения, если эта ячейка ввода пуста (например, строка 3 выше). Я пробовал:
- Добавить инструкцию IF или инструкцию OR в пределах критериев (например,
OR(data!A$2:A$100=A1,isblank(A1))
). - Использование
+
в SUMPRODUCT в качестве оператора ИЛИ, (в этом ответе https://stackoverflow.com/a/27536131/1450420)
Одним из решений является, чтобы иметь различные ветви формулы в зависимости от которых суммарные размеры присутствуют, но это было бы быстро выйти контроля, если я распространю такое же поведение на другие размеры, например Size
.
Любая помощь оценена!
(У меня работает Excel Mac 2011).
EDIT
Per @ комментарий BrakNicku в один из формул я попытался было =SUMPRODUCT(((data!A$2:A$100=A2)+ISBLANK(A2))*((data!B$2:B$100=B2)+ISBLANK(B2))*(data!E$2:E$100))
Причина этого не работает, что иногда мои данные есть пустые атрибуты (отредактированные выше). По какой-то причине эта формула дважды учитывает строки, в которых соответствует данный атрибут (например, data!A6
), но отсутствует другой атрибут (например, data!B6
).
EDIT 2
Я могу понять, почему этот двойной подсчет происходит, потому что +
подытоживает матч, потому что data!A$2:A$100=A2
(они совпадают, потому что они оба поля пустыми) и матч, потому что ISBLANK(A2)
(это действительно пустой). Остается вопрос, как добиться этого без двойного подсчета. Если необходимо, обходным путем может быть заполнение всех пустых ячеек на моих данных некоторым значением-заполнителем.
Использование столбцов '+ ISBLANK (...)' для столбцов A и B должно давать правильные результаты. Что именно формула вы пробовали? – BrakNicku
@BrakNicku благодарит за вашу помощь. Я отредактировал мой вопрос. –