大家好,今天我们来解决一个粉丝求助的问题:如何将一行中重复的内容,单独提取到一个单元格中,并用逗号间隔。这个问题涉及到了Excel几个非常基础且实用的函数,所以必须给大家讲讲,假如我们在实际工作中遇到了此应用场景,一定会帮我们大忙的。
我们以两行简单的数据作为数据源来举例。有两行地区名称,每行地区名称中存在重复的内容,我们需要将有重复的地区名称提取出来放置到F列显示,不同名称之间用逗号间隔。比如第一行中“福建”与“广东”各出现了2次,表示重复了,那么我们就将这两个名称去重显示在F2单元格显示:“福建,广东”。
这个问题我们会涉及到四个比较实用的函数,分别是TEXTJOIN函数、UNIQUE函数、FILTER函数、COUNTIF函数,其中前三个函数是比较新的函数,需要我们用到新版本软件,最后一个函数是哪个版本都有的传统老函数。
COUNTIF函数用于统计满足某个条件的单元格的数量。
我们逐个统计在A2:E2区域内的每个单元格的内容,在统计区域A2:E2中出现的个数,以数组溢出显示为:{2,2,2,2,1}。即前4个单元格内容都出现了2个,只有最后一个单元格内容“四川”出现了1个。
让COUNTIF函数大于1,因为只有COUNTIF函数返回的数组元素大于1个的时候,才会表示重复出现了。
如果COUNTIF函数大于1成立则返回逻辑值TRUE,否则返回逻辑值FALSE,产生新的数组溢出结果:{TRUE,TRUE,TRUE,TRUE,FALSE}。
=FILTER(A2:E2,COUNTIF(A2:E2,A2:E2)>1)FILTER函数是根据条件来做数据筛选的。
FILTER(筛选后返回结果的区域,筛选的条件)
很明显当筛选条件COUNTIF(A2:E2,A2:E2)>1返回逻辑值TRUE成立时,我们就将A2:E2区域内符合条件的单元格筛选出来。也就是说只要地区名称出现的个数大于1即重复时,就将A2:E2区域对应的内容筛选出来。新的数组溢出为:{"福建","广东","福建","广东"}。
=UNIQUE(FILTER(A2:E2,COUNTIF(A2:E2,A2:E2)>1),TRUE)
UNIQUE(数据区域,返回唯一列/行,返回每个不同项目还是只出现一次的记录)
因为我们上述步骤中只是将重复出现的内容全部提取出来了,需要去重显示,所以以上述函数作为UNIQUE函数的第一参数,第二参数设置为TRUE表示按列去重。去重后以新的数组溢出显示:{"福建","广东"}。
=TEXTJOIN(",",TRUE,UNIQUE(FILTER(A2:E2,COUNTIF(A2:E2,A2:E2)>1),TRUE))
TEXTJOIN(间隔符号,是否忽略空白单元格,要合并的内容)
用TEXTJOIN函数将上述数组溢出内容,用间隔符号逗号,忽略空白单元格后合并起来就可以了。
此案例中没有考虑数据源不存在重复的地区名称的问题。所以此现象会产生错误值,只要在最外面嵌套IFERROR函数就能解决了。
其实重复学习Excel,刚开始是挺难的,但重复的次数多了总会成为习惯,先从坚持一星期开始,你会爱上那种脑子又累,又无限充实的感觉。回顾关键内容,善用图片表达,学会建立联系,拓展深度广度,浓缩关键概念,应用到行动中,善于归纳总结,尝试进行分享。