【发布时间】:2016-03-13 23:45:14
【问题描述】:
我有一张data 的多个维度如下:
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 中使用
+作为 OR 语句(根据此答案 https://stackoverflow.com/a/27536131/1450420)
一种解决方案是根据存在的汇总维度使用不同的公式分支,但如果我将相同的行为扩展到Size 等其他维度,这将很快失控。
任何帮助表示赞赏!
(我正在运行 Excel Mac 2011)。
编辑
根据@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)的行进行双重计数。
编辑 2
我知道为什么会发生这种重复计算,因为 + 正在对匹配求和,因为 data!A$2:A$100=A2(它们匹配,因为它们都是空白)和匹配因为 ISBLANK(A2)(它确实是空白)。问题仍然是如何在不重复计算的情况下实现这一目标。如果需要,一种解决方法可能是用一些占位符值填充我数据上的所有空白单元格。
【问题讨论】:
-
对 A 和 B 列使用
+ISBLANK(...)应该会得到正确的结果。你试过的公式到底是什么? -
@BrakNicku 感谢您的帮助。我已经编辑了我的问题。
标签: excel excel-formula sumifs