powerpivot在另一个计算中使用计算值

时间:2014-10-14 06:59:30

标签: excel powerpivot

我有以下表格

订单:

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|Goal|Quarter
-------------------
   1  | 20 |   1   
   1  | 15 |   2   
   2  | 12 |   2   
   2  | 15 |   3   
   3  |  5 |   3 
   3  |  7 |   4 

用户:

UserID|Name
-----------
   1  | John  
   2  | Bob
   3  | Homer

我要做的是总结一个用户拥有的所有订单,除以他的目标总和,然后总结所有订单,将结果除以所有目标的总和,然后添加此结果到所有用户的上一个结果。

结果应为:

UserID|Name |Goal|CostSum|Percentage|Sum all
---------------------------------------------------
   1  |John | 35 |   13  |    0.37  |
   2  |Bob  | 27 |   23  |    0.85  |
   3  |Homer| 12 |   20  |    1.67  | 

计算如下:

CostSum: 10+3=13
Goal: 20+15=35
Percentage: CostSum/Goal=13/35=0.37

Sum all: 10+15+3+5+8+9+6=56
Goal all: 20+15+12+15+5+7=74
percentage all= Sum_all/Goal_all=56/74=0.76

Result: percentage+percentage_all=0.37+0.76=1.13 for John
                                            1.61 for Bob
                                            2.43 for Homer

我的主要问题是最后一步。我不能让它添加整个百分比。它总是会过滤结果,从而导致错误。

1 个答案:

答案 0 :(得分:2)

要做到这一点,您需要创建一些措施。

(我假设您已经将您的数据透视表设置为表格布局并关闭了小计 - 这允许您在行标签部分中将UserID和名称设置为彼此相邻。)

这就是我们的输出结果。

enter image description here

首先,请确保您已正确建立关系 - 它应该是这样的: enter image description here

我相信您已经在数据透视表中设置了前5列,因此我们需要为CostSumAll,GoalSumAll,PercentageAll和Result创建度量。

使这项工作的关键是确保PowerPivot忽略CostSumAll和GoalSumAll度量的行标签过滤器。 ALL()函数在CALCULATE()中使用时充当覆盖过滤器 - 您只需指定要忽略的过滤器。在这种情况下,UserID和Name。

<强> CostSumAll

=CALCULATE(SUM(Orders[Cost]),ALL(Users[UserID]),ALL(Users[Name]))

<强> GoalSumAll

=CALCULATE(SUM(Goals[Goal]),ALL(Users[UserID]),ALL(Users[Name]))

<强> PercentageAll

=Orders[CostSumAll]/Orders[GoalSumAll]

<强>结果

=Orders[Percentage]+Orders[PercentageAll]

下载 - Example file available for download here。 (实际上并没有在Google Docs中阅读它 - 它无法处理PowerPivot的内容。在本地保存以便查看。)