数据透视表搞不定的行列转置问题,试试“透视列”!
作者:阿硕来源:部落窝教育发布时间:2021-08-10 15:20:19点击:7068
编按:
Hello everyone~我是爱生活爱Excel的小E。如何将数据进行行列转置?用数据透视表、用函数公式?相信各位小伙伴有不少答案。当我们的数据体量过大或者是单组别数据,我们会选择Power Query中的“透视列”功能进行行列转置,将一维数据转换成二维数据,具体如何操作?跟小E一起来学习一下叭。
有小伙伴问了这样一个问题:我有一组员工请假日期的数据,按行依次记录,只有姓名这一列可以作为分组依据,如何将这样的数据由列转置到行,用每一行记录一名员工的请假情况?
大家先来看一下数据。如下图所示,A列中的数据为员工姓名,B列中的数据为员工的请假日期,数据是纵向排列的,也就是我们常说的一维数据。
对于将数据由列转置到行这类问题,在PQ中常用“透视列”的功能来实现。可以说,“透视列”功能是将一维数据转换为二维数据一大利器。
对于一维转二维这种操作,在数据的结构方面,至少需要两个分组依据以及一列数据值,即一般至少需要三列数据。这位小伙伴的数据,数据值是有的,没什么问题。但在组别方面,却只有姓名这一个组别,还缺少一个组别。这可就和常见的“透视列”所需要的数据不太一样了。对于这样的数据,该如何实现转置呢?今天,我们一起来学习一下解决这种问题的方法。
解决问题的思路:先添加一个用来标识每名员工请假次数的辅助列,然后再到PQ中对这个辅助列进行“透视列”操作。
一、 添加用来标识员工请假次数的辅助列
首先,我们在C列增加一项“请假次数”,并在C2单元格中输入函数公式=COUNTIF($A$2:A2,A2),并将公式下拉复制到C13,得到的结果如下图所示。
公式解析:这是COUNIF函数的一个经典应用——计算组内序号。在这里,我们就是利用COUNTIF函数生成一个辅助列,用来标识每名员工请假的次数序号。可以看到,张三的请假次数是从1开始,至2结束,共2次;李四的请假次数是从1开始,至3结束,共3次;其余以此类推。每名员工的请假次数均从1开始,直到该员最后一次的请假次数为止。所以,我们现在来理解一下“组内序号”的含义——所谓“组内序号”的“组”,在本例中指的就是员工姓名,即以员工姓名来分组;所谓“序号”,就是该员工请假的次数,自1开始递增,直到该员工最后一次请假的次数为止,与其他员工的请假次数无关。
由于刚才写的COUNTIF函数只显示组内序号的数字,看起来不太好理解,下面我们将公式稍微调整一下,在数字前面加上“第”,在数字后面加上“次”,让它变得更容易理解。我们将C2中的公式改为="第"&COUNTIF($A$2:A2,A2)&"次",得到的结果如下图所示。
以员工张三为例,可以看到,请假次数由“1”、“2”变成了“第1次”、“第2次”,这样是不是更好理解了呢?
添加完这个辅助列,接下来我们要做的,就是去PQ中进行“透视列”操作啦!
二、 利用PQ的“透视列”功能转置数据
点击A1:C13区域中的任意一个单元格,例如B2,然后依次点击【数据】-【来自表格/区域】,弹出“创建表”对话框,勾选“表包含标题”,如下图所示。
点击“确定”之后,就可以进入到PQ编辑器界面,如下图所示。
单击“请假次数”字段,即可选中“请假次数”这一列,此时该列变成绿色(请注意:本步骤很关键,想要对哪一列进行透视,则务必先单击选中哪一列)。
接下来,依次点击【转换】-【透视列】,弹出“透视列”对话框,如下图所示。
在“透视列”对话框中,点击“值列”下方的下拉菜单,将参数选择为“请假日期”;
点击“高级选项”前方的三角形图标,展开“高级选项”,点击“聚合值函数” 下方的下拉菜单,将参数选择为“不要聚合”。如下图所示:
点击“确定”之后,得到的结果如下图所示:
我们可以看到,“姓名”这一列中的数据已经变成了每个员工的姓名,每个员工的请假日期已经被转置到不同的列中。
请小伙伴们注意观察一下:
原始数据中“请假日期”这个字段已经消失,字段中的值(即具体的请假日期),被放置在员工姓名和次数相交叉的单元格中:原本纵向排列的“请假次数”,现在变成了各列的标识字段,共四列,分别为“第1次”、“第2次”、“第3次”、“第4次”;
同时,若员工未请假,则数据显示为“null”。例如,对于员工王五来说,由于他请了两次假,所以在第4行中,“第1次”、“第2次”字段中存放的就是他的两次请假日期,而“第3次”、“第4次”两列中的请假日期对应的数据均为“null”。
由于此时日期显示的是日期+时间的格式,所以,我们再对数据进行一下微调,将数据显示为日期格式。依次点击“第1次”、“第2次”、“第3次”、“第4次”前面的数据类型图标(即由日历和钟表构成的那个图标,它的意思是数据类型为日期+时间),在弹出的下拉列表中,将数据格式选择为“日期”。如下图所示:
整理后的数据如下图所示。
注:也可以在进入PQ编辑器之后,第一步就将“请假日期”的数据类型改成日期格式,这样可以避免刚才我们进行的4次修改数据类型的工作。本例之所以这样演示,就是为了让小伙伴多多熟悉PQ的操作哦!感兴趣的小伙伴们,可以在看完本文之后,尝试一下这种操作方法。
对于“null”值,我们不需要对其进行修改,因为当PQ中的数据上载至Excel中之后,它就会自动地显示为空值了。
接下来,我们依次点击【主页】-【关闭并上载】-【关闭并上载】,即可将数据上载至Excel中,最终的数据结果如下图所示。
亲爱的小伙伴,你学会了吗?
本文配套的练习课件请加入QQ群:902294808下载。
做Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!
扫下方二维码关注公众号,可随时随地学习Excel:
相关推荐:
将excel中的数据按照指定数量进行重复,非得用VBA才能实现吗?
版权申明:
本文作者阿硕;同时部落窝教育享有专有使用权。若需转载请联系部落窝教育。