Power Query中把一个表格分成多个表格的办法

例如这样一个问题,学校运动会的报名表,格式如下:

Power Query中把一个表格分成多个表格的办法

我们需要按照比赛项目分成8个表格,每个表中又要按照性别年级分组:

Power Query中把一个表格分成多个表格的办法

Power Query能不能做到?

如果你掌握了Power Query的两个小技能,你就能够按照上述的要求来拆分表格:



我就不带你去复习了,自己点开看就可以了,我们来说这个表格的处理过程:

数据整理

目前这个表格肯定不适合做数据源,我们要做降维处理,逆透视,另外设计班级顺序排列,我们先做个小表放在边上备用:

Power Query中把一个表格分成多个表格的办法

我们后期需要用这个数字来排列顺序,先做好准备。

逆透视:

我习惯用Power BI Desktop中的Power Query因为能够智能联想输入,写函数比较方便,用Excel中的Power Query也是一样的,不过你最好把网页打开,放到Power Query官方文档这里,方便查找M函数。从文件,把班级这个表和报名表加载到Power Query中:

Power Query中把一个表格分成多个表格的办法

删除其他没用的列,选中运动项目列,逆透视,结果如下表:

Power Query中把一个表格分成多个表格的办法

自定义列合并班级姓名:

Power Query中把一个表格分成多个表格的办法

提取年级:我们直接用班级列来提取

Power Query中把一个表格分成多个表格的办法

合并查询年级序号:因为汉字排序会乱,数值排序才准确

Power Query中把一个表格分成多个表格的办法

然后我们用这个新的序号升序排序一下:

Power Query中把一个表格分成多个表格的办法

注意,我在每一步的处理过程中都会把不用的列随手删除。

分组

先做一个大的分组,直接按照运动项目分组即可,聚合选择所有行:

Power Query中把一个表格分成多个表格的办法

这时候我们就得到了8个表,当然这八个表还不是我们最终需要的表格:

Power Query中把一个表格分成多个表格的办法

定义表格处理函数

我们需要取出其中一个表来做一个自定义函数,变成最终的那样的表格,初学者到这里就有点蒙,怎么取出其中一个表,很简单,建一个空查询输入:

=报名表[计数]{0}

Power Query中把一个表格分成多个表格的办法

  • 报名表:总表
  • [计数]:引用的列的名称
  • {0}:引用的行号,0代表第一行

我们要这个基础上做分组编号,分组依据是性别与班级,我们之前讲过,如果记不住添加索引这个函数,就先添加一列索引,复制这个函数备用:

Power Query中把一个表格分成多个表格的办法

然后分组:

Power Query中把一个表格分成多个表格的办法

这样选择之后,再来修改公式:

Power Query中把一个表格分成多个表格的办法

把这部分用添加索引函数替换修改:

Power Query中把一个表格分成多个表格的办法

然后对这个表展开做透视:透视列时选姓名班级那一列,聚合选不聚合

Power Query中把一个表格分成多个表格的办法

透视结果如下:

Power Query中把一个表格分成多个表格的办法

看到没有这时年级顺序是乱序的,我们用序号来做排序就可以了:

Power Query中把一个表格分成多个表格的办法

可以整理一下,把序号列删除:班级改成年级这样基本符合我们的结果要求了。

Power Query中把一个表格分成多个表格的办法

在这个查询上右键创建函数:

Power Query中把一个表格分成多个表格的办法

提示时点击创建:

Power Query中把一个表格分成多个表格的办法

输入函数名称:

Power Query中把一个表格分成多个表格的办法

还会有个提示,点击确定:

Power Query中把一个表格分成多个表格的办法

Power Query中把一个表格分成多个表格的办法

把参数T添加到下面两个位置中,就可以了,其他的都不变。这个函数的作用就是把前面没有处理好的表,转换成结果表格。

使用函数修整表格

回到报名表自定义列引用函数处理表格:

因为原本计数列中的值就是表格,直接用来作为函数的参数

Power Query中把一个表格分成多个表格的办法

这时候自定义里面的八个表格,就是我们需要的表格了:

Power Query中把一个表格分成多个表格的办法

最后一步,提取结果表格

还好项目不多,一个一个的提取就好了

Power Query中把一个表格分成多个表格的办法

后面的只要复制第一个,修改行号就可以了:

Power Query中把一个表格分成多个表格的办法

如果是在Excel中就要选择加载哪个表格,哪个不加载。

这个方法虽然有点笨拙,但是项目少的情况下,还是可以达成目的的。


分享到:


相關文章: