作者: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就是第一个位置。