解答读者提问:根据部门业绩统计表汇总每个部门的总业绩情况,汇总表里需要列出部门和部门经理,默认每个部门中第一次列出的人是部门经理。
案例:
下图 1 中每个部门第一次出现的人是部门经理,根据这个规则,计算各部门的总指标和总实际完成数,同时列出部门经理的名字。
效果如下图 2 所示。
解决方案:
这个案例中,分组求和不难,难的是还要提取出每个分组的第一个人员。
1. 选中数据表的任意单元格 --> 选择工具栏的“数据”-->“来自表格/区域”
2. 在弹出的对话框中保留默认设置 --> 点击“确定”
表格已上传至 Power Query。
3. 选择工具栏的“主页”-->“分组依据”
4. 在弹出的对话框中按以下方式设置 --> 点击“确定”:
在弹出的对话框中选择“高级”选项;
在第一个下拉菜单中选择“部门”;
新列名:输入“指标”;
操作:选择“求和”;
柱:选择“指标”;
点击“添加聚合”按钮 --> 在新的聚合中设置如下:
新列名:输入“实际完成”;
操作:选择“求和”;
柱:选择“实际完成”
现在默认的公式如下。
Table.Group 函数这里用到了三个参数:Table.Group (要聚合的表, 聚合列的列名, 要执行的聚合列操作);
第三个参数表示要执行聚合的操作,可以有多个聚合,用 {} 分开;格式为 {{新列名1, 聚合1}, {新列名2, 聚合2},{新列名3, 聚合3},...};
目前第三个参数中共有两个聚合,就是刚才通过对话框设置的。
了解了公式的语法,接下来就简单了,现在缺一个“部门经理”的聚合,我们只需在现有公式中加上这个条件就行了。
5. 在第三个参数的第一个位置加上 {"部门经理",each [姓名]{0}},
公式释义:
"部门经理":新聚合的列名
each [姓名]{0}:
提取出每个分组中出现的第一个“姓名”;
{0} 表示列表中的第一个元素;PQ 中的 M 语句沿用了大多数编程语言的惯例,从 0 开始统计第一个元素
回车后就能看到“部门经理”列已经生成了。
6. 选择工具栏的“主页”-->“关闭并上载”-->“关闭并上载至”
7. 在弹出的对话框中选择“表”--> 选择“现有工作表”及所需上载至的位置 --> 点击“确定”
右侧绿色的表格就是符合要求的汇总表。