Excel Power Pivot:使用筛选小计作为列的计算作为计算列的源

时间:2018-01-19 12:23:34

标签: excel powerpivot

我的数据看起来像这样:

year    channel discount    sales
2015    1       3.00        20,000
2015    1       3.00        23,000
2015    2       3.00        67,000
2015    1       6.00        80,000
2015    1       9.00        40,000
2016    1       4.00        98,000
2016    1       7.00        34,000
2016    1       7.00        15,000
2016    2       7.00        45,000
2016    1       10.00       60,000
2017    1       4.50        54,000
2017    1       7.50        60,000
2017    1       10.50       50,000
2017    2       10.50       54,568

我想使用电力支点按year进行分组并计算加权销售额:折扣应乘以与之相关的销售额,然后再除以每年的总销售额。

在Powerpivot中,我按列计算我的总销售额 TOTAL_SALES_YEAR=CALCULATE(SUM([sales]), ALLEXCEPT(Sheet1,Sheet1[year]))我的加权销售额为WEIGHTED_SALES=[discount]*[sales]/[TOTAL_SALES_YEAR]

但是,现在,我希望我的总销售额对过滤器做出反应 - 是选择了频道1,频道2还是两者。

所有渠道:正确计算小计 All channels: Subtotals are calculated correctly

已过滤的频道:小计未发生变化 Filtered channel: Subtotals have not changed

我该如何解决这个问题?谢谢。

1 个答案:

答案 0 :(得分:2)

当您使用ALLEXCEPT函数时,您正在剥离除[year]列之外的所有内容的过滤器上下文。如果您想保留[channel]过滤器上下文,那么您也可以将其添加为函数内的列:

= CALCULATE(SUM([sales]), ALLEXCEPT(Sheet1, Sheet1[year], Sheet1[channel]))

另一种方法是,不是指定要保留的过滤器上下文,而是指定要删除的过滤器上下文。您好像要删除[discount]过滤器上下文:

= CALCULATE(SUM([sales]), ALL(Sheet1[discount]))

修改:您似乎将公式作为计算列而非度量值。如果您希望表格对过滤器做出响应,那么您需要使用度量。

请注意,在我的屏幕截图中,度量旁边有“fx”,并且数据透视表列未标有“Average of”或“Sum of”聚合描述。

您的加权销售指标也必须改为:

= SUMX(Sheet1, Sheet1[discount]*Sheet1[sales]) / [TotalSales]

Measures