有没有办法添加仅适用于总列的计算字段,而无需为每个列项添加不必要的详细信息?
考虑以下示例。
数据如下:
Year Product Units Price Revenue
2013 Porduct A 100 1.5 150
2013 Porduct B 150 1.6 225
2013 Porduct C 200 1.7 300
2013 Porduct D 250 1.8 375
2013 Porduct E 300 1.9 450
2014 Porduct A 150 1.5 225
2014 Porduct B 200 1.6 300
2014 Porduct C 250 1.7 375
2014 Porduct D 300 1.8 450
2014 Porduct E 350 1.9 525
最终得到的枢轴如下:
现在,比如说,我想为每种产品总额添加 10% 的折扣,但是当我添加计算字段时,我会分别获得每年不必要的折扣详细信息:
我真正想要的是摆脱逐年的细节并只留下总数的计算:
但我希望在不隐藏列的情况下实现这一点,而只是添加一个字段,就像我通常在不使用数据透视表的情况下所做的那样。背后的原因是,我可能希望执行大量后续计算,而不使数据透视表水平增长(尤其是当我进行逐月分析时,每次添加计算字段时,结果表都会扩展 12 列)。
答案1
开箱即用的标准数据透视表不允许这样做。
首先,我将描述如何使用常规数据透视表解决这个问题,其次,我将向您展示如何使用 PowerPivot 插件实现这个问题。
选项 1:两个标准数据透视表
我的解决方法是简单地将两个数据透视表并排放置,一个以年份作为列标签,另一个则没有(第二个表位于低一行,因此它们对齐)。
您需要确保行标签列的排序和筛选方式相同。然后,您可以隐藏第二张表上的标签列。
(在此屏幕截图中,我在第 3 行手动添加了“总计”标签)
选项 2:使用 PowerPivot
使用 PowerPivot 和 DAX,您可以将所有这些列创建为单独的度量,以便可以非常精确地控制所应用的过滤器。
首先确保安装了 PowerPivot - Excel 不附带它,除了 Excel 2013 的某些版本。我不会介绍安装过程,但是快速搜索如果你遇到困难的话应该会有所帮助。
选择您的数据范围并单击Create Linked Table
PowerPivot 工具栏。
应出现绿色的 PowerPivot 窗口。默认情况下,您的表将被简单地命名为表格1- 让我们重命名它产品销售使其更有意义。
单击PivotTable
绿色功能区中间的按钮,将其放置在您喜欢的任何位置。现在我们需要创建一些度量。PowerPivot 使用一种称为 DAX(数据分析表达式)的代码,它与普通的 Excel 公式非常相似。
返回 Excel,首先添加产品到Row Labels
数据透视表。现在单击New Measure
PowerPivot 功能区选项卡上的按钮。
在结果窗口中,设置Measure name (all PivotTables)
为单位总数并在Description
自由文本框中输入:
=sum(ProductSales[Units])
创建另一个度量,称为单位 2013. 输入此代码:
=CALCULATE([Units Total],ProductSales[Year]=2013)
DAX 中的函数CALCULATE()
允许您将(多个)过滤器应用于聚合表达式 - 因此这里我们过滤单位总数我们刚刚创建的指标,按相关年份计算。重复单位 2014,然后再做同样的事情总收入,2013 年收入&2014 年收入。
您现在可以按自己喜欢的方式排列和格式化您的列 - 为了模仿上面的屏幕截图,我手动将 2013 年和 2014 年的列设置为灰色。