我有以下表格
订单:
OrderID|Cost|Quarter|User
-------------------------
1 | 10 | 1 | 1
2 | 15 | 1 | 2
3 | 3 | 2 | 1
4 | 5 | 3 | 3
5 | 8 | 4 | 2
6 | 9 | 2 | 3
7 | 6 | 3 | 3
目标:
UserID|Name |Goal|Quarter|Sum
-----------------------------
1 |John | 20 | 1 | x
1 |John | 15 | 2 | x
2 |Bob | 12 | 2 | x
2 |Bob | 15 | 3 | x
3 |Homer| 5 | 3 | x
3 |Homer| 7 | 4 | x
现在我要做的是在第二个表中总结所有具有当前行的UserID并且位于当前行四分之一的订单。
我的第一次尝试是:
= CALCULATE(总和(订单[费用]);订单[季度] = [季度];订单[用户] = [用户名])
结果应为:
UserID|Name |Goal|Quarter|Sum
-----------------------------
1 |John | 20 | 1 | 10
1 |John | 15 | 2 | 3
2 |Bob | 12 | 2 | 15
2 |Bob | 15 | 3 | 8
3 |Homer| 5 | 3 | 11
3 |Homer| 7 | 4 | 0
但是我收到错误:Column "User ID" cannot be found or may not be used in this expression.
为了尝试一下,我使用了固定值:
= CALCULATE(总和(订单[费用]);订单[季度] = 2;订单[用户] = 1)
这导致没有出现错误信息,但也没有完全正常工作。我现在得到了
UserID|...|Sum
1 |...| 3
1 |...| 3
2 |...|
2 |...|
3 |...|
3 |...|
FYI: the empty space in SUM is really empty.
如果我做以下事情,那就是疯狂的事情:
= CALCULATE(总和(订单[费用]);订单[季度] = 2;订单[用户] =订单[用户])
我明白了:
UserID|...|Sum
1 |...| 3
1 |...| 3
2 |...|
2 |...|
3 |...| 11
3 |...| 11
这几乎是我想要的。但我不明白,为什么有些细胞在工作。
有没有办法按我的意愿完成这项工作?
答案 0 :(得分:4)
<强> Urganot 强>,
如果您充分利用PowerPivot中的所有功能,那么所需的输出非常简单 - 主要是创建relationships between datatables的能力。
我已经复制了你的数据,但有一件事遗失了 - 一个用户表。您可以从数据库/ IT部门获取一个,或从您已有的数据中获取简单create it in Excel。只要确保它不包含任何重复项,否则您将无法定义关系。
我在接下来的步骤中使用的数据表看起来像这样(用户表位于右侧):
将所有表格添加到Powerpivot数据模型(PowerPivot功能区 - >添加到数据模型),切换到图表视图和connect Orders and Goals tables to User table(只需从表格中拖动UserID订单和目标到用户表)。它应该是这样的:
完成此操作后,您可以轻松获得所需的数字。只需定义两个新的计算字段(Powerpivot功能区 - &gt;计算字段 - &gt; 新计算字段)。确保选择用户的目标表并输入以下公式:
订单价值总和
=SUM(Orders[Cost])
总和或目标目标
=SUM(Goals[Goal])
在Excel 2013中,界面如下所示。
为了按季度查看数字,您还需要一张包含唯一季度数字的表格 - 只需按照创建用户表格的步骤操作即可。再次,将图表视图链接到其他表格,您应该最终得到:
将Quarter表用作slicer,这可能是分析/过滤数字的最佳方式:
这就是答案: PowerPivot中的关系。
否则这可能非常困难,更不用说一旦开始处理数千行就会变慢。我相信这种方法与“旧方法”(嵌套的LOOKUP和IF)相比要好得多。
另外,请记住,您使用的数据并非以最佳方式构建 - 尤其是季度不按年份区分等。
无论如何,我希望这有帮助 - 如果有任何不清楚的地方,请在评论部分告诉我。或者只需继续下载my source Excel file (2013 version)。