在excel中如何用VLOOKUP进行模糊查找

作者:iamlaosong

该函数的语法规则如下:

VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)

    参数           简单说明                                输入数据类型

lookup_value       要查找的值                             数值、引用或文本字符串

table_array          要查找的区域                          数据表区域

col_index_num    返回数据在区域的第几列数    正整数

range_lookup      匹配方式                                 TRUE(或不填)、FALSE

使用此函数时,最后一个参数一般都填0(FALSE),表示精确匹配,如果找不到,则返回错误值 #N/A。如果填1,则表示模糊匹配,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。

不过这个模糊匹配有个前提,就是查找区域中第一列必须排序,还必须是升序,否则结果不可预料。

此外,这种查找是从第一个字符开始比较,也不存在什么通配符,所以类似“安徽邮政速递物流公司”通过“邮政速递”是没有办法匹配到的,但是“安徽邮政”倒是可能的。

和这个函数有点类似的函数是MATCH,差别是前者返回单元格的值,后者返回单元格的位置。

这个模糊查询用起来麻烦,返回值也不太靠谱,所以我认为,除了一些特殊的场合,这个模糊查询功能基本没啥用处。

那是不是就没有办法了呢,办法还是有的,那就是用“通配符+精确匹配”方法。

还是上述例子,用“*邮政速递*”还是可以匹配到“安徽邮政速递物流公司”这个值的,如果是单元格的值,则用连接符&连接*号,例如在sheet2的A列模糊匹配A1单元格的值,匹配后取回C列值:

   =VLOOKUP("*"&A1&"*",Sheet2!A:C,3,0)

 需要注意的是,返回的是第一个符合匹配的结果。match函数也有类似功能。例如:

  =MATCH("*"&A1&"*",Sheet2!A:A,0)

返回的是匹配位置,注意,位置是区域内的相对位置,比如A10:A100,A10就是第一个位置。

 

你可能感兴趣的:(在excel中如何用VLOOKUP进行模糊查找)