简称查找全称攻略大全!

职场   教育   2024-11-12 23:01   江苏  

直接来看需求吧!提取对应的简称

简单来说就是看看科目名称中是否存在简称存在简称列表中的内容,如果存在请输入到B列!


这玩意典型的查找,一般新手肯定想到了IF+FIND这个思路,我们先来写一下!


▍新手常见写法-开火车

▼新手公式

=IF(ISNUMBER(FIND($D$2,A2)),$D$2,IF(ISNUMBER(FIND($D$3,A2)),$D$3,IF(ISNUMBER(FIND($D$4,A2)),$D$4,IF(ISNUMBER(FIND($D$5,A2)),$D$5,IF(ISNUMBER(FIND($D$6,A2)),$D$6,IF(ISNUMBER(FIND($D$7,A2)),$D$7,IF(ISNUMBER(FIND($D$8,A2)),$D$8,"")))))))

新手能想到使用IF嵌套来写一般是正常的思路,因为函数储备不足!如果能写对,应该也是值得骄傲,我们都是这么过来的!多层嵌套也是考验自己眼力劲的!



但是这样真不是一种非常合适的方法,因为如果简称内容很多,基本没有通用性和扩展性!


如果非要使用这种思路,我们是否可以使用IFS来简化一下!但是也就是简化了IF部分,基本还是很长!


我们换一种思路,考虑查找匹配类函数来处理这一类问题!


▍MATCH匹配思路

▼MATCH思路

=INDIRECT("D"&MAX(ISNUMBER(MATCH("*"&$D$2:$D$8&"*",A2,))*ROW($D$2:$D$8)))



思路解析:首先我们要明白一点,MATCH第一参数支持通配符,且可以使用多个内容去匹配位置,返回的结果也是多个,一一对应!这里我们把所有关键词都加上通配符去名称中查找,意思如果包含这个关键词,MATCH结果就是一个对应位置的数字,使用ISNUMBER判断即可,然后返回对应的行号,因为是数组,我们需要使用一个聚合函数来提取唯一值,这里MAX或者MIN都可以,如果不存在多个关键词的情况下!


但是这其实还是有点复杂了,我们可以使用更加简单的LOOKUP+FIND套路来处理!


▍LOOKUP+FIND-大道至简

=LOOKUP(1,0/FIND($D$2:$D$8,A2),$D$2:$D$8)

这里利用的就是LOOKUP二分法查找,如果第一参数比第二参数都大,那么返回第二参数中最后一个数值对应的结果!扩展性也很好,非常的简化!


内容是讲完了,但是按照老铁们每期的提问惯例


肯定要问:“如果有多个关键词呢?能不能都提取出来合并到一个单元格中?”

我只能回答:能!或者行! 还是中!


▍多个关键词的困境


▼BYROW逐行处理

=TEXTJOIN(",",,BYROW($D$2:$D$8,LAMBDA(x,IF(ISNUMBER(FIND(x,A2)),x,""))))

公式的意思就是用每一个关键词去内容中查找,如果找到返回,否则返回空值,最后使用TEXTJOIN合并一下!


但是你会发现上面的方法还是复杂了,其实完全可以更简单!

▼FIND数组查找

=TEXTJOIN(",",,IF(ISNUMBER(FIND($D$2:$D$8,A2)),$D$2:$D$8,""))



注解WPS目前已支持TEXTJOIN ,放心使用!OFFICE 365 、2019、2021版本已支

Excel办公实战
分享Excel及WPS函数、技巧、VBA、PBI、JSA等办公技能。助你轻松实现办公自动化!易办公◎早下班!
 最新文章