Excel 可选维度的条件 SUMPRODUCT / SUMIFS / 数组公式
Excel conditional SUMPRODUCT / SUMIFS / Array Formula for optional dimension
我有一个 sheet 的 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
sheet 具有每个维度(国家/地区和风味),如果我未指定维度,它将对所有行求和那个维度。
A B C
1 COUNTRY FLAVOUR SALES TOTAL
2 Japan Strawberry 100
3 Japan 200
4 Strawberry 500
如果所有维度都存在(即上面的第 2 行),我可以使用 SUMPRODUCT 或 SUMIFS 执行此操作:
=SUMPRODUCT((data!A:A0=A1)*(data!B:B0=B1)*(data!D:D0>[start_date]*(data!D:D0<[end_date])*(data!E:E0))
但是,如果输入单元格为空(例如上面的第 3 行),我无法弄清楚如何包含维度的所有行。我试过了:
- 在条件中添加 IF 语句或 OR 语句(例如
OR(data!A:A0=A1,isblank(A1))
)。
- 在 SUMPRODUCT 中使用
+
作为 OR 语句,(根据此答案 )
一个解决方案是根据存在的汇总维度使用不同的公式分支,但如果我将相同的行为扩展到更多维度,如 Size
.[=26,那将很快失去控制=]
感谢任何帮助!
(我是 运行 Excel Mac 2011).
编辑
根据@BrakNicku 的评论,我尝试的公式之一是 =SUMPRODUCT(((data!A:A0=A2)+ISBLANK(A2))*((data!B:B0=B2)+ISBLANK(B2))*(data!E:E0))
这不起作用的原因是有时我的数据具有空白属性(上面已编辑)。出于某种原因,此公式会重复计算存在属性匹配(例如 data!A6
)但其他属性缺失(例如 data!B6
)的行。
编辑 2
我明白为什么会发生这种重复计算,因为 +
正在对匹配求和,因为 data!A:A0=A2
(它们匹配,因为它们都是空白)和匹配,因为 ISBLANK(A2)
(确实是空白)。问题仍然是如何在不重复计算的情况下实现这一目标。如果需要,解决方法可能是用一些占位符值填充我数据中的所有空白单元格。
试试这个(我只包括前两个,我没有列出日期):
=SUMPRODUCT((((Data!$A:$A=A2)+(A2=""))>0)*(((Data!$B:$B=B2)+(B2=""))>0)*(Data!$E:$E))
重复计算值的原因在这里:
((data!A:A0=A2)+ISBLANK(A2))
如果 A 列中的单元格为空,则此总和的两部分都等于 1。要解决此问题,您可以将其更改为:
(((data!A:A0=A2)+ISBLANK(A2))>0)
我有一个 sheet 的 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
sheet 具有每个维度(国家/地区和风味),如果我未指定维度,它将对所有行求和那个维度。
A B C
1 COUNTRY FLAVOUR SALES TOTAL
2 Japan Strawberry 100
3 Japan 200
4 Strawberry 500
如果所有维度都存在(即上面的第 2 行),我可以使用 SUMPRODUCT 或 SUMIFS 执行此操作:
=SUMPRODUCT((data!A:A0=A1)*(data!B:B0=B1)*(data!D:D0>[start_date]*(data!D:D0<[end_date])*(data!E:E0))
但是,如果输入单元格为空(例如上面的第 3 行),我无法弄清楚如何包含维度的所有行。我试过了:
- 在条件中添加 IF 语句或 OR 语句(例如
OR(data!A:A0=A1,isblank(A1))
)。 - 在 SUMPRODUCT 中使用
+
作为 OR 语句,(根据此答案 )
一个解决方案是根据存在的汇总维度使用不同的公式分支,但如果我将相同的行为扩展到更多维度,如 Size
.[=26,那将很快失去控制=]
感谢任何帮助!
(我是 运行 Excel Mac 2011).
编辑
根据@BrakNicku 的评论,我尝试的公式之一是 =SUMPRODUCT(((data!A:A0=A2)+ISBLANK(A2))*((data!B:B0=B2)+ISBLANK(B2))*(data!E:E0))
这不起作用的原因是有时我的数据具有空白属性(上面已编辑)。出于某种原因,此公式会重复计算存在属性匹配(例如 data!A6
)但其他属性缺失(例如 data!B6
)的行。
编辑 2
我明白为什么会发生这种重复计算,因为 +
正在对匹配求和,因为 data!A:A0=A2
(它们匹配,因为它们都是空白)和匹配,因为 ISBLANK(A2)
(确实是空白)。问题仍然是如何在不重复计算的情况下实现这一目标。如果需要,解决方法可能是用一些占位符值填充我数据中的所有空白单元格。
试试这个(我只包括前两个,我没有列出日期):
=SUMPRODUCT((((Data!$A:$A=A2)+(A2=""))>0)*(((Data!$B:$B=B2)+(B2=""))>0)*(Data!$E:$E))
重复计算值的原因在这里:
((data!A:A0=A2)+ISBLANK(A2))
如果 A 列中的单元格为空,则此总和的两部分都等于 1。要解决此问题,您可以将其更改为:
(((data!A:A0=A2)+ISBLANK(A2))>0)