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

Excel Power Pivot: calculations with filtered subtotal as a column as source for calculated column

我有这样的数据:

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

我想使用 power pivot 按 year 分组并计算加权销售额,如下所示:折扣应乘以与之相关的销售额,然后除以每年的总销售额。

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

但是,现在我希望我的总销售额对筛选器做出反应 - 无论是选择渠道 1、渠道 2 还是两者都被选中。

所有渠道:小计计算正确

过滤渠道:小计没有改变

我该怎么做?谢谢。

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

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

执行此操作的另一种方法是,您可以指定要删除的筛选上下文,而不是指定要保留的筛选上下文。您似乎想要删除 [discount] 过滤器上下文:

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

编辑: 看来您将公式作为计算列而不是度量来计算。如果您希望 table 响应过滤器,则需要使用措施。

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

您的加权销售指标也必须更改为如下所示:

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