大多数时候我们都需要进行精确查找,但也会遇到需要模糊查找的时候。譬如根据简称查找全称,譬如根据数值划分等级等。模糊查找不等于瞎子摸象,这里分享4种用VLOOKUP和LOOKUP函数进行模糊查找的方法。
今天来跟大家分享模糊查找的几种方法。
常规的模糊查找分为两种情况,一种是数值;一种是文本。
一、数值模糊查找
首先我们分享关于数值的模糊查找。
举例:
某公司需要为新员工定制工作服,现在需要根据员工的实际身高匹配需要定制衣服的尺码。
这种情况就需要通过模糊查找来返回每个员工身高所对应的尺寸。有两种方法来完成。
方法一:LOOKUP
函数公式:=LOOKUP(B2,{0;165;170;175;180;185;190},{"S";"M";"L";"XL";"XXL";"XXXL";"XXXXL"})
公式解析:
这是通过LOOKUP向量形式来完成模糊查找。可以理解为查找B2单元格处于{0;165;170;175;180;185;190}哪个区间,如果在某个区间内就返回对应{"S";"M";"L";"XL";"XXL";"XXXL";"XXXXL"}的文本信息。
譬如169位于165-170之间,那么就返回“M”文本信息。
这里的区间对应关系如下。0到小于165的属于S尺寸;165到小于170的属于M尺寸,依次类推,直到大于等于190的属于XXXXL尺寸。
如果对此处看不懂的可以查看教程《Excel函数学习之LOOKUP函数的5种用法》的第四节“按区间查找的套路”。
方法二:VLOOKUP
函数公式:=IFERROR(VLOOKUP(B2+5,F:G,2,1),"S")
日常工作中我们使用VLOOKUP函数时第四个参数都是输入0,表示精确查找,此处第四参数为1,表示近似查找。
公式解析:
1.通过函数公式=VLOOKUP(B2,F:G,2,1)即可返回目标区域中小于等于查找值的最大值所对应的尺码。注意:在使用VLOOKUP函数进行模糊查找之前必须要将查找范围F:G处的数据按查找内容(此处为身高)进行升序排序。
例如,我们查找172,那么就返回目标区域中小于等于172的最大值即170,对应的尺码为M。由于服装的尺寸是就高不就低,身高172的员工必须定制身高175的L码的衣服,所以我们在查找匹配时需要在员工身高基础上加5,这样就能返回大于身高的最小尺寸了。
2.员工中有部分身高即使加5后仍小于165,因为F列165就是最小的了,所以这部分数据无法在F列查找到所需值,VLOOKUP函数返回错误值#N/A。我们希望小于165的员工都定制S号,就通过IFERROR函数将VLOOKUP错误结果重定向为文本字符“S”。
二、文本字符模糊查找
下面分享文本的模糊查找,例如,通过查找AB返回查找区域中包含AB的AAAABBB单元格所对应的值。
举例:
下表为各公司2018年度营业额数据,公司名称为全称。现在我们在另外一个表中需要根据公司简称来匹配相关的营业额数据。
方法一:VLOOKUP+通配符
函数公式:=VLOOKUP("*"&E2&"*",A:B,2,0)
公式解释:
*代表所有字符,"*"&E2&"*"则表示包含E2单元格文本内容的所有内容。
方法二:LOOKUP+FIND
函数公式:=LOOKUP(1,0/FIND(E2,A$2:A$8),B$2:B$8)
公式解释:
公式用了LOOKUP查找套路。通过FIND函数判断E2单元格中文本处于A$2:A$8单元格中的位置,如果存在则返回大于0的数值,否则返回错误值;然后0/FIND(),则得到一组0和错误值的数组;最后LOOKUP函数出手,在数组中找到最大的不大于1的值,0,并根据0所在位置,返回对应的B$2:B$8中的值。
顺便说一嘴:如果你只想通过简称查到全称,则公式可以改成=LOOKUP(1,0/FIND(E2,A$2:A$8),A$2:A$8)
。
看不懂的可以看教程《Excel函数学习之LOOKUP函数的5种用法》的第二节“精确查找的套路”
相关学习推荐:excel教程