适用于可选维度的Excel条件SUMPRODUCT / SUMIFS / Array公式
我有一个像这样的多个维度的data
表:
ABCDE 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 ....
我想汇总date范围内的数据, summary
表中包含每个维度(国家和风格),如果我没有指定维度,则会为该维度的所有行进行summary
。
ABC 1 COUNTRY FLAVOUR SALES TOTAL 2 Japan Strawberry 100 3 Japan 200 4 Strawberry 500
如果使用SUMPRODUCT或SUMIFS存在所有维度(即上面的第2行),我可以这样做:
=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))
但是,我一直无法弄清楚如果input单元格是空的(例如上面的第3行),如何包括一个维度的所有行。 我试过了:
- 在标准内添加一个IF语句或OR语句(例如
OR(data!A$2:A$100=A1,isblank(A1))
)。 - 使用SUMPRODUCT中的
+
作为OR语句,(根据此答案https://stackoverflow.com/a/27536131/1450420 )
一个解决scheme是根据哪个摘要维度存在不同分支的公式,但是如果我将这个相同的行为扩展到像Size
这样的更大的维度,这个分支会很快失去控制。
任何帮助感激!
(我正在运行Excel Mac 2011)。
编辑
(@ =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
)。
编辑2
我可以看到为什么这样的重复计算是因为+
正在把data!A$2:A$100=A2
加起来,因为data!A$2:A$100=A2
(它们匹配是因为它们都是空白的)和匹配,因为ISBLANK(A2)
(它确实是空白的)。 如果不重复计算,问题将会如何实现。 如果需要的话,一个解决方法可能是用一些占位符值填充我的数据上的所有空白单元格。
重计值的原因是:
((data!A$2:A$100=A2)+ISBLANK(A2))
如果A列中的某个单元格为空白,则该总和的两个部分相等。要消除此问题,可以将其更改为:
(((data!A$2:A$100=A2)+ISBLANK(A2))>0)
尝试这个(我只包括前两个,我离开了date):
=SUMPRODUCT((((Data!$A$2:$A$5=A2)+(A2=""))>0)*(((Data!$B$2:$B$5=B2)+(B2=""))>0)*(Data!$E$2:$E$5))