这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

前两天在群里碰到小伙伴提到这个问题 。

这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

【这个Excel问题虽然有点难,但是在高级工具面前还是不值一提】这里姓名和工号是一一对应的,但是并不是按照标准的方式存储数据的,现在需要按照组别、姓名、工号分别拆开 , 也就是变成这种形式的 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

这样的数据就是标准的表格形式,方便统计 , 方便数据匹配 。
上面的不标准的数据其实是典型的数据杂糅问题(多个信息杂糅在一个单元格) , 处理这种问题最常用的就是分列 。但是这里需要有2列需要分列 , 关键的是需要做好对应,直接分列就不太好做了 。
普通的方法不太好做,所以我们又请出了数据处理利器——Power Query.

方法1:不用M函数的PQ方法

不会M函数来做的话,步骤稍微有点多 , 不过方法不难,就是拆分 合并 。
第一步、加载数据
将表格数据加载到PQ,然后改名为“姓名”,在查询列表里 , 将“姓名”这个表复制一份,再改名为“工号” 。改名的步骤主要是待会用起来好分清楚 , 当然也可以省略 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

第二步、对“姓名”表中的姓名列拆分
选中“姓名”表,选中姓名列,点击开始-拆分列,选择自定义分割符 , 输入“、”(这里会自动检测到,如果没有检测到就手动输入) , 然后点开高级选项,选择拆分为行
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

这样就把姓名拆开到行了 , 至于这里的工号,我们不用管,删掉都没有关系 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

对这个表添加一个索引 。注意这里我是点开索引列,选的是从1开始 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

然后对“工号”这个表,按照上面的步骤也来做一遍,注意拆分的是工号这列
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

第三步、合并查询
选中“姓名”表,点击开始-合并查询,选择“工号”表为合并表,选中两个表的索引列作为依据 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

得到下面合并的结果 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

点击工号.1,展开Table,这里只需要选择工号就好了 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

然后就差不多得到需要的结果了 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

删除不要的工号列和索引列,再将数据加载回工作表 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提



方法二:写个M函数简直太便捷

方法一的操作确实有点多,用到的知识点还真不少,不过如果是直接写个M函数那就太便捷了 。
首先 还原一份加载后没做任何修改的数据 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

然后添加自定义列 , 写公式 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

公式为:
=Table.FromColumns({Text.Split([姓名],"、"),Text.Split([工号],"、")})
并不太复杂的函数,外层是一个Table.FromColumns函数,表示以列构造表,里面则是分别将姓名列和工号列拆分 。
然后再将构造的Table展开就好了 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

得到的结果同样也是正确的 。
这个Excel问题虽然有点难,但是在高级工具面前还是不值一提

怎么样,是不是M函数更快捷!
那么问题来了,你掌握了哪种方法呢?还有什么 好的方法来做这个题目么?欢迎交流!

相关经验推荐