学会万金油,一维表转二维表也简单!
同学们,大家好!今天要分享的是一维表转二维表的方法,用到的函数公式是筛选公式(包括去重筛选和一对多筛选),俗称万金油。先来看下源数据和结果数据。
上图左表是源数据,它是一个户籍名单表,是个一维表;右表是结果表,也就是我们要转化的效果表,它是一个二维表。那如何把左表转为右表呢?
首先我们需要将户主姓名这一列去重筛选出来,也就是D列是根据A列去重筛选出来的,在D2单元格输入公式=INDEX(A:A,SMALL(IF(MATCH(A$2:A$15,A$2:A$15,)=ROW($2:$15)-1,ROW($2:$15),4^8),ROW(A1)))&"",按ctrl+shift+enter三键回车,向下填充。得到了D列的效果。由于手写公式太慢,动图太大上传不了,所以直接复制粘贴公式了。
去重公式以前说过,具体详解不再重复,不清楚的可以看之前的文章《查找不重复记录的几个套路(删除重复项)》。
户主姓名筛选出来后,就可以根据它在左表中查询对应的家庭成员了,只不过是个一对多的查询。在E2单元格输入公式=INDEX($B:$B,SMALL(IF($A$2:$A$15=$D2,ROW($2:$15),4^8),COLUMN(A1)))&"",按ctrl+shift+enter三键回车,向右向下填充。这里用column是因为一对多的多个值要放在一行中。
这样一维表转二维表就完成了,这两个公式虽然有点难度,但都很经典,值得学会,工作中也会常用到。
除了用函数完成,也可以用power query来完成,而且表头都不用自己手工输入。选中户籍表中任意单元格,点【数据】-【自表格】-包含标题-确定。
进入pq编辑器是这样的。然后点击更改的类型前面的叉号,将其删除。
点击fx添加步骤,输入公式= Table.SplitColumn(Table.Group(源,"户主姓名",{"家庭成员姓名",each [家庭成员姓名]}),"家庭成员姓名",each _),回车就完成了,最后上载到excel中就可以了。
下图是完成后的效果:
链接:
https://pan.baidu.com/s/1t9j2RFLJ482cJbTKYVYSVA
提取码:u03y