前两天在群里碰到小伙伴提到这个问题。
这里姓名和工号是一一对应的,但是并不是按照标准的方式存储数据的,现在需要按照组别、姓名、工号分别拆开,也就是变成这种形式的。
这样的数据就是标准的表格形式,方便统计,方便数据匹配。 上面的不标准的数据其实是典型的数据杂糅问题(多个信息杂糅在一个单元格),处理这种问题最常用的就是分列。但是这里需要有2列需要分列,关键的是需要做好对应,直接分列就不太好做了。 普通的方法不太好做,所以我们又请出了数据处理利器——Power Query. 方法1:不用M函数的PQ方法 不会M函数来做的话,步骤稍微有点多,不过方法不难,就是拆分+合并。 第一步、加载数据 将表格数据加载到PQ,然后改名为“姓名”,在查询列表里,将“姓名”这个表复制一份,再改名为“工号”。改名的步骤主要是待会用起来好分清楚,当然也可以省略。
第二步、对“姓名”表中的姓名列拆分 选中“姓名”表,选中姓名列,点击开始-拆分列,选择自定义分割符,输入“、”(这里会自动检测到,如果没有检测到就手动输入),然后点开高级选项,选择拆分为行。
这样就把姓名拆开到行了,至于这里的工号,我们不用管,删掉都没有关系。
对这个表添加一个索引。注意这里我是点开索引列,选的是从1开始。
然后对“工号”这个表,按照上面的步骤也来做一遍,注意拆分的是工号这列。
第三步、合并查询 选中“姓名”表,点击开始-合并查询,选择“工号”表为合并表,选中两个表的索引列作为依据。
得到下面合并的结果。
点击工号.1,展开Table,这里只需要选择工号就好了。
然后就差不多得到需要的结果了。
删除不要的工号列和索引列,再将数据加载回工作表。
方法二:写个M函数简直太便捷 方法一的操作确实有点多,用到的知识点还真不少,不过如果是直接写个M函数那就太便捷了。 首先 还原一份加载后没做任何修改的数据。
然后添加自定义列,写公式。
公式为: =Table.FromColumns({Text.Split([姓名],'、'),Text.Split([工号],'、')}) 并不太复杂的函数,外层是一个Table.FromColumns函数,表示以列构造表,里面则是分别将姓名列和工号列拆分。 然后再将构造的Table展开就好了。
得到的结果同样也是正确的。
怎么样,是不是M函数更快捷! 那么问题来了,你掌握了哪种方法呢?还有什么 好的方法来做这个题目么?欢迎交流! |
|
来自: 昵称38017100 > 《表格使用学习》