前军教程网

中小站长与DIV+CSS网页布局开发技术人员的首选CSS学习平台

TEXTJOIN与?FILTER合体,实现一对多查找,将结果放在一个单元格!

1职场实例


小伙伴们大家好,今天我们来继续解决Excel在职场工作中的实际问题。今天讲到的这个问题在以前的文章中已经介绍过很多次了,并且具有职场需求率高,技巧性强,入门必学必选的特点。以前我把这种问题描述为:将相同条件对应的内容用分隔符合并显示在一个单元格中;其实现在也可以描述为对查询值实现一对多的查找,并将结果显示在一个单元格内,并用分隔符号进行间隔


如下图所示

A1:B7单元格为地区与水果名称对应表,我们发现A列的某个地区可能在B列对应多个水果名称内容。所以我们要实现的是:根据D列的地区查询值,将其对应的全部水果名称显示在E列单元格中,并且不同水果名称之间用分隔符逗号进行间隔显示。


2解题思路


以前我们习惯用TEXTJOIN函数配合IF函数来解决此类问题,今天我们为了学习一个新的函数FILTER函数,决定用TEXTJOIN函数配合FILTER函数尝试解决它,下面我们就来看一下具体操作方法。



TEXTJOIN函数用来将两个或两个以上的文本字符串合并,并以指定的分隔符分开。如果省略分隔符,直接合并个文本字符串。


FILTER这个函数的英文本意在字典中是“过滤、筛选”的意思,顾名思义,FILTER函数的作用是:根据给定的条件筛选出对应的数据。





因为我们的目的是要用TEXTJOIN函数合并内容,那么我们就要设法将需要合并的列表展现出来,即需要构造TEXTJOIN函数的第3参数,这里我们用FILTER函数来构建。


首先我们在E2单元格输入函数公式

=FILTER($B$2:$B$7,$A$2:$A$7=D2)


函数基本结构

=FILTER(数据区域,筛选条件,[找不到结果返回的值])


第1个参数是要筛选的单元格区域或数组,第2个参数是筛选条件;第3个参数是容错值,如果未筛选出任何数据,FILTER函数会返回“#CALC!”,可以通过参数3屏蔽它,相当于自带IFERROR的功能效果。


即我们通过FILTER函数,筛选B2:B7区域(水果名称区域),且只有当A2:A7区域内的地区名称与查询值D2的地区值相同时,我们才会将该地区对应的B2:B7区域内的水果名称筛选出来。


我们选中公式后按下F9键查看数组返回结果

={"苹果";"石榴";"葡萄"}


即A2:A7区域中符合查询值D2单元格“东北”的值所筛选出来的B列的水果名称分别为"苹果","石榴","葡萄"。并以数组元素的形式存储显示。



得到各个地区查询值需要合并的列表后,我们就可以利用TEXTJOIN函数进行快速的嵌套批量合并了


我们继续完善E2单元格中的函数公式为

=TEXTJOIN(",",TRUE,FILTER($B$2:$B$7,$A$2:$A$7=D2))


函数基本结构

TEXTJOIN(分隔符,是否忽略空值,合并区域)


第1个参数为分隔符,表示用什么自定义符号进行分隔,第2参数表示是否忽略空值进行合并,TRUE表示忽略,FALSE表示不忽略,第3个参数是要合并的数据范围。


即我们通过TEXTJOIN函数将上一步中

FILTER($B$2:$B$7,$A$2:$A$7=D2)函数得到的数组元素列表:

{"苹果";"石榴";"葡萄"},忽略掉空值单元格(TRUE)后,用分隔符号逗号“,”进行间隔合并,最终结果显示在一个单元格中:"苹果,石榴,葡萄",如下图所示:


发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言