首页 文章

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

提问于
浏览
0

我有这样的数据:

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] .

Now, however, I would like for my total sales to react to filters - 是选择了通道1,通道2还是两者 .

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

已过滤的 Channels :小计未更改
Filtered channel: Subtotals have not changed

我怎么能这样做?谢谢 .

1 回答

  • 2

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

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

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

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

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

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

    您的加权销售指标也必须改变一点,如下所示:

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

    Measures

相关问题