2016-03-13 2 views
0

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

+0

Использование столбцов '+ ISBLANK (...)' для столбцов A и B должно давать правильные результаты. Что именно формула вы пробовали? – BrakNicku

+0

@BrakNicku благодарит за вашу помощь. Я отредактировал мой вопрос. –

ответ

2

Причина значений двойного учета здесь:

((data!A$2:A$100=A2)+ISBLANK(A2)) 

Если ячейка в столбце A пуста, обе части этой суммы равны 1. Чтобы избавиться от этой проблемы, вы можете изменить ее на:

(((data!A$2:A$100=A2)+ISBLANK(A2))>0) 
+0

Отлично! Очень признателен ;-) –

1

Попробуйте это (я только включил первые два, я оставил даты отъезда):

=SUMPRODUCT((((Data!$A$2:$A$5=A2)+(A2=""))>0)*(((Data!$B$2:$B$5=B2)+(B2=""))>0)*(Data!$E$2:$E$5)) 

![enter image description here

Смежные вопросы