分享

多种方法合并同类名单,总有一种适合你!

 刘卓学EXCEL 2021-04-02

大家好,今天要分享的是合并名单的问题。先来看下数据,如下图所示。左表是源数据,是一个班级姓名表,现在要把相同班级的姓名合并在一起,效果如右表所示。

关于这个问题,有很多解决方法。第一种就是用函数textjoin,之前也说过这种方法,可以参考《史上最强文本连接函数textjoin的用法》这篇文章。今天再简单说一下。

在E2单元格输入公式=TEXTJOIN("\",1,IF(D2=A$2:A$10,B$2:B$10,"")),按ctrl+shift+enter三键结束,向下填充。

公式中关键的部分是if函数,用来判断A列的班级是否和D2的班级相同,如果相同返回对应的姓名,否则返回空文本,形成如下的数组{"红莲";"卫庄";"";"老子";"";"";"";"";""},最后用textjoin合并起来就可以了。

你说我的excel中没有textjoin这个函数,那么可以使用power query(简称pq)来完成,也就是第二种方法。

首先选中班级姓名表中的任意单元格,点【数据】-【从表格】-勾选包含标题-确定,进入pq编辑器。

进入pq编辑器后如下图所示。

点击fx添加步骤,输入公式= Table.Group(更改的类型,"班级",{"合并名单",each Text.Combine([姓名],"\")}),按回车确定,得到下图的效果就完成合并了。

点击【主页】选项卡-点击【关闭并上载】,完成。这样就上载到excel工作表中。

如果你说pq我也没有,那么还可以用辅助列的方法来合并,这就是第三种方法。辅助列可以用vlookup,也可以用lookup。

先用vlookup,在C列添加辅助列,C2单元格输入公式=B2&IFNA("\"&VLOOKUP(A2,A3:C$11,3,),""),向下填充,得到下图C列的结果,这样把各班所有的姓名合并到第一次出现的位置,接下来就可以用vlookup查找了。这个公式还是有点难理解的,有点迭代计算的意思,同时注意引用的方式(相对绝对引用)和位置(有点错位)。

在F2单元格输入公式=VLOOKUP(E2,A$1:C$10,3,),向下填充,完成。

用lookup也可以,同样C列添加辅助列,在C2单元格输入公式=IFERROR(LOOKUP(1,0/(A2=A$1:A1),C$1:C1)&"\","")&B2,向下填充,得到下图C列的效果,可以看到各班合并后的所有姓名出现在最后一次,恰好和vlookup相反,vlookup是出现在第一次。

由于合并后的名单在最后一次出现,那么还是用lookup查找。在F2单元格输入公式=LOOKUP(1,0/(A$2:A$10=E2),C$2:C$10),向下填充,完成。

这几种方法,总有你能用上的,赶紧练习起来吧。

链接:

https://pan.baidu.com/s/1iZ4CxXZnmUzAIf7OTy1RQQ

提取码:lrho

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多