这是一个现实工作中遇到的案例:在不改变原数据表的前提下,能否用数据透视表提取一列数值的唯一值,然后再求和?
案例:将下图 1 的数据表按以下原则汇总,效果如下图 2 所示:
计算各部门去重后的总人数;
先对每个人的指标去重,然后再计算每个部门的总指标;
对所有业绩累计求和,按部门分类
解决方案:如果要在数据透视表里同时实现三个需求,非常不好办,尤其是指标要按人去重,再求和。
不管怎样,我们先试试。
1. 选中数据表的任意单元格 --> 选择菜单栏的“插入”-->“数据透视表”
2. 在弹出的对话框中选项“现有工作表”及所需上传至的位置 --> 勾选“将此数据添加到数据模型”--> 点击“确定”
3. 在右侧的“数据透视表字段”区域按以下方式拖动字段:
行:“部门”
值:“姓名”、“指标”、“业绩”
4. 选中“姓名”字段 --> 右键单击 --> 在弹出的菜单中选择“值字段设置”
5. 在弹出的对话框的“计算类型”中选择“非重复计数”--> 点击“确定”
“姓名”和“业绩”列的确符合要求了,但是“指标”确实没辙,数据透视表没有“非重复求和”这个选项。所以得另辟蹊径。
1. 选中数据表的任意单元格 --> 选择菜单栏的“数据”-->“从表格”
2. 在弹出的对话框中点击“确定”。
3. 在“查询”区域选中“表1”--> 右键单击 --> 在弹出的菜单中选择“复制”
4. 选中“姓名”列 --> 选择菜单栏的“主页”-->“删除行”-->“删除重复项”
5. 选择菜单栏的“主页”-->“分组依据”
6. 在弹出的对话框中按以下方式设置 --> 选择“高级”选项:
在第一个下拉菜单中选择“部门”
新列名:输入“人数”
操作:选择“对行进行计数”
7. 点击“添加聚合”按钮 --> 在第二个聚合中按以下方式设置 --> 点击“确定”:
新列名:输入“指标”
操作:选择“求和”
柱:选择“指标”
8. 在“查询”区域中选择“表1”--> 选择菜单栏的“主页”-->“分组依据”
9. 在弹出的对话框中按以下方式设置 --> 点击“确定”:
在一个下拉菜单中选择“部门”
新列名:输入“业绩”
操作:选择“求和”
柱:选择“业绩”
10. 选择“主页”-->“合并查询”
11. 在弹出的对话框中按以下方式设置 --> 点击“确定”:
选择“表1”中的“部门”列
在下拉菜单中选择“表1 (2)”--> 选择“部门”列
12. 点开“表1 (2)”旁边的扩展钮 --> 取消勾选“部门”和“使用原始列名作为前缀”--> 点击“确定”
13. 将“业绩”拖动到最后一列。
14. 选择菜单栏的“主页”-->“关闭并上载”-->“关闭并上载至”
15. 在弹出的对话框中选择“仅创建连接”--> 点击“加载”
16. 在右侧的“工作簿查询”区域选中“表1”--> 右键单击 --> 在弹出的菜单中选择“加载到”
17. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上传至的位置 --> 点击“加载”
通过 Power Query 就实现了数据透视表所不能完成的任务,如果还要在底端显示求和项,可以再对绿色的表格进行透视。