你好,我是小必,感谢与你在这里相遇。
今天给大家继续更新一期关于Excel中数据转换的问题。
前几天在某公众号上看到了这个素材,在工作表中使用了很多的辅助列来完成的,对于这样的数据转换的问题是Excel Power Query最擅长的事情,所以将自己的解题的思路分离给大家,可以帮助大家快速地提高Power Query中关于M公式的理解与学习。
本期内容基本上还是利用Power Query中的M公式的方法来完成,虽然说使用图形操作也能完成,但是总的来说,图形操作不是很智能,当数据发生变化的时候会发生错误。
如图所示,将下面的左侧的每户人员的信息按户主进行转换成右侧的数据。需要注意的是左侧的第2列中同时包含了户主。
先将数据从【数据】-【从表格/区域】,加载至Power Query中去。如图所示。
在Power Query编辑器中,首先使用Table.Group函数以"户主"为关键字进行分组,如图所示。
接下来就是对每一个table里面的数据进行处理,即将户主的行删除掉,这里有2种方法可以选择,一种是先将”户主及成员“列深化出来,再使用List.RemoveItems函数删除当前的户主的行,另外一种就是使用Table.SelectRows函数进行筛选,将户主的行删除掉,然后再深化出“户主及成员”。
第1种方法可以写成:
为了后面的调用方便,分组的内容写成多个Record的形式。即:
第2种方法可以写成:
接下来我们将这些内容横向展开要使用时先要转换成列,使用到Record.FromList函数,但是展开时,还要命名成“成员1”,"成员2"……这样的俩字 ,所以需要将每个List的数量数出来,再构造一个序列,连接一个字符串"成员"即可。最终可以写成:
然后将Record展开即可。如图所示:
两种方法完整的代码如下图所示:
领取专属 10元无门槛券
私享最新 技术干货