excel中,使用LOOKUP+SEARCH解决全称查找简称问题,SEARCH支持通配符。冷门函数SEARCHB可分离字符,区分字节。学习新公式更智能。
问题,购货单位的名称是一样,产品名称左边是用简称,右边是用全称,现在要根据全称查找简称对应的单价。试了好久都没解决。
微软Office LTSC 2021专业增强版 简体中文批量许可版 2024年09月更新
- 类型:办公软件
- 大小:2.2GB
- 语言:简体中文
- 时间:2024-09-12
查看详情
这个问题,如果不懂方法,确实是很难解决。也是突然想起来LOOKUP这个新方法,才得以解决。
VLOOKUP支持通配符,如果是左边的简称查找右边的全称,是可以很容易解决。右边添加一个辅助列,将购货单位和产品名称连接起来。
=E2&F2
现在就可以直接VLOOKUP了。
=VLOOKUP(A2&B2,D:G,4,0)
不过,现在问题是根据全称查找简称,VLOOKUP不支持这种用法。而他的兄弟LOOKUP支持,但有一个前提,不能出现通配符*。
=LOOKUP(1,0/(($A$2:$A$5=E2)*FIND($B$2:$B$5,F2)),$C$2:$C$5)
一旦有通配符*,LOOKUP+FIND这个经典组合也派不上用场,全出错。
对于这种,除了将通配符查找替换掉,还有没其他方法呢?
其实,有一个函数用法跟FIND几乎一样,就是SEARCH,这个新函数支持通配符。
只要将FIND换成SEARCH,问题就解决了。
=LOOKUP(1,0/(($A$2:$A$5=E2)*SEARCH($B$2:$B$5,F2)),$C$2:$C$5)
SEARCH这个是冷门函数,他还有一个带B的兄弟SEARCHB,最经典的用法,就是分离字符。
字母、数字是单字节用?表示,就是查找字母、数字首次的出现位置,然后将后面的所有内容提取。
=MIDB(A2,SEARCHB("?",A2),99)
B系列函数跟没带B的用法一样,唯一的区别就是区分字节,汉字是双字节,字母和数字是单字节。
比如卢子1987,就是2个汉字,也就是4个字节,因此首次数字出现位置是5。
=SEARCHB("?",A2)
同理,分离汉字就可以用SEARCHB减去1位来提取。
=LEFTB(A2,SEARCHB("?",A2)-1)
热门函数虽然重要,冷门函数也不能忽视,要不然关键时刻会无从下手。