【源数据才是大麻烦】这个数据你打算怎么洗?

我们,让Excel变简单

这个问题来自于公众号一位同学的留言。上次我们发了一篇文章:

【源数据才是大麻烦】如何多列数据合并成两列
这位同学看到后,想起了自己遇到过的问题,于是就留言问:

提问:ABCD列是共同列,EF\GH\IJ\KL\列有为各自组的数据。数据要洗成ABDCEF(然后GH\IJ\KL放在EF的下面,他们前面依然要的是ABCD列的数据)有解吗?

看过以前文章的同学都知道,Power Query功能非常强大,基本上可以说没有什么它做不了的(到现在为止我只发现一件事只靠Power Query做不了😁)。

我觉得这位同学的这个问题很有代表性,也是一个比较常见的问题,所以就写一篇文章介绍一下这个问题的处理方式。

文末有处理过程的视频演示

数据和目标

先来看一下数据:

这是这位同学模拟的数据,其中A到D列是数据的类型,E到J列记录了不同的人所对应的金额。其中EF是一组,GH,IJ是另外两组。

其实那位同在留言中,已经很好的说明了需求,他还好心的做了一份目标数据:

红色方框里的数据(G:J)列是原来的数据,需要把黄色的数据放到EF列上,在下面,还需要把IJ列的数据也放到EF列上。

这里唯一值得商榷的就是最好将E列的列名从“店长”修改为“员工"。

看上去其实跟我们那篇文章中的数据差不多,只不过多了前面ABCD四列。就是这四列,让我们不能使用原来的方法。今天介绍的这个实现方法更有启发性,可以扩展你的思路,这个方法也可以处理更多的情形。

建立Power Query查询

在“数据”选项卡下,点击“从表格”:

进入Power Query编辑器

选中前面4列(大类型1,大类型2,大类型3,大类型4),点击鼠标右键:

得到结果表格:

添加辅助列

到此为止,我们做的事情跟这篇文章讲过的一样,也得到了类似的结果。但是,这个属性和值列把员工和金额搅合在了一起,我们需要把他们分开。

在“添加列”选项卡中,点击“索引列”:

添加一列索引:

在“添加列”选项卡上,点击“自定义列”:

在弹出的对话框上,将新列名修改为“序号”,自定义列公式中输入:

=Number.RoundDown([序号]/2,0)

插入序号列:

序号列每两行是一样的

删除索引列:

索引列的作用就是添加序号列,现在可以删除掉了
添加两个筛选步骤

由于数据中将人员和金额放在了一起,我们需要将他们分开。

首先,选中属性列名的筛选箭头,点击“文本筛选器”,选择“开头不是”:

在对话框中,将第一行右边的文本框输入为“金额”:

点击确定后,得到如下的表格:

注意右侧面板中红色标注的“筛选的行”,那个就是这个去掉了金额项的表格的名称。

在公式编辑栏,全选该公式,按Ctrl+C复制:

在右侧面板中,选中最后一个步骤,点击鼠标右键:

点击“插入步骤后”:

选中公式栏,全选公式,按Ctrl+V粘贴:

将其中的not删掉:

回车后,得到表格:

这个表格含有所有的金额
删掉多余的列

选中最后一步的表格中的前5列,全部删除:

将“值”列名称修改为“金额”:

插入一个步骤

在右侧面板中,选中最后一个步骤,点击鼠标右键:

在新步骤的公式栏中,输入公式:

= Table.Join(筛选的行,"序号",重命名的列,"序号")

回车后得到结果:

将属性列名修改为“人员类型”,值列名称修改为“人员”:

删除“序号”列:

先按照人员类型列降序排序,再按照人员升序排序:

得到结果:

上载数据

在“主页”选项卡中,点击关闭并上载:

得到结果:

我们得到了想要的结果!

视频演示

好了,今天就分享到这里了!
关注本公众号,点击底部菜单“联系客服”,与客服取得联系,索取“复杂的多列转两列”案例文件
END
关注ExcelEasy
关于Excel的一切问题,你都可以在这里找到答案
(0)

相关推荐