Vlookup函数是一个非常好用的查找函数,但由于种种原因,实际使用时会遇到种种让人搞不明白的错误,本文对各种常见错误进行总结并介绍相关解决方法。5、查找为数字,被查找区域为文本型数字。... 46、查找格式为文本型数字,被查找区域为数值型数字。... 57、没有正确的使用引用方式,造成在复制公式后区域发生变动引起错误。... 611、反向查找vlookup不支持产生的错误。... 913、vlookup函数第1个参数不直接支持数组形式产生的错误... 1114、在Excel2003版本引用Excel2007或者以上版本提示无效。... 11六、单元格格式设置错误公式显示不了结果... 1215、单元格只显示公式不显示公式结果。... 12一、函数参数使用错误
1、第2个参数区域设置错误之1
错误原因: vlookup函数第2个参数是查找区域,该区域的第1列有一个必备条件,就是查找的对象(A9),必须对应于区域的第1列。本例中是根据姓名查找的,那么,第二个参数姓名必须是在区域的第1列位置,而上述公式中姓名列是在区域A1:E6的第2列。所以公式应改为:=VLOOKUP(A9,B1:E6,3,0)2、第2个参数区域设置错误之2
错误原因:本例是根据姓名查找职务,可大家注意一下,第2个参数B1:D6根本就没有包括E列的职务,当然会产生错误了。所以公式应改为:=VLOOKUP(A9,B1:E6,4,0)3、第4个参数少了或设置错误。
错误原因:vlookup第4个参数为0时表示精确查找,为1或省略时表示模糊查找。如果忘了设置第4个参数则会被公式误以为是故意省略,按模糊查找进行。当区域也不符合模糊查找规则时,公式就会返回错误值。所以公式应改为=VLOOKUP(A9,A1:D6,2,0)或 =VLOOKUP(A9,A1:D6,2,) 注:当参数为0时可以省略,但必须保留“,”号。4、看似模糊查找实则精确查找
如图4,要看B列的游戏名称在A列是否存在,B列游戏名称是A列的一部分,在B列游戏名称前后加上通配符*,再用Vlookup查找,C2公式=Vlookup("*"&B2&"*",$A$1:$A$10,1,0),注意,这里最后一个参数要用0,精确查找,很多人误以为是模糊匹配最后一个参数为1。从要查找的内容看是模糊匹配,但是从公式看是精确查找。二、数字格式不同,造成查找错误
5、查找为数字,被查找区域为文本型数字。
错误原因:在vlookup函数查找过程中,文本型数字和数值型数字会被认为不同的字符。所以造成无法成功查找。解决方案:把查找的数字在公式中转换成文本型,然后再查找。即:=VLOOKUP(A9&"",A1:D6,2,0)
6、查找格式为文本型数字,被查找区域为数值型数字。
或者直接选中要转换为数值的单元格或区域,点击下拉框的转换为数字。
三、引用方式使公式复制后产生错误。
7、没有正确的使用引用方式,造成在复制公式后区域发生变动引起错误。
例7,如图9所示,当C9的公式复制到C10和C11后,C10公式返回错误值。错误原因:由于第二个参数A2:D6是相对引用,所以向下复制公式后会自动更改为A3:D7,而A10中的工号A01所在的行,不在A3:D7区域中,从而造成查找失败。解决方案:把第二个参数的引用方式由相对引用改为绝对引用即可。B9公式改为:=VLOOKUP(A9,$A$2:$D$6,2,0)四、多余的空格或不可见字符
8、数据表中含有多余的空格。
例8, 如图10所示,由于A列工号含有多余的空格,造成查找错误。错误原因:多一个空格,用不带空格的字符查找当然会出错了。2、在公式中用trim函数替换空格而必须要用数据公式形式输入。即:=VLOOKUP(A9,TRIM(A1:D6),2,0) 按【Ctrl+Shift+Enter】输入后数组形式为{=VLOOKUP(A9,TRIM(A1:D6),2,0)}9、类空格但非空格的字符。
在表格存在大量的“空格”,但又用空格无法替换掉时,这些就是类空格的不可见字符,这时可以“以其人之道还之其人之身”,直接在单元格中复制不可见字符粘贴到替换窗口,替换即可。
10、不可见字符的影响。
例:如图12所示的A列中,A列看上去不存在空格和类空格字符,但查找结果还是出错。我们可以用exact函数判断单元格内容是否完全一致,当返回结果为true,表示结果完全相同,当结果为false,表示单元格内容不完全一致。
公式=exact(A4,B9)返回结果为false,说明表面看上去内容相同的A4和B9单元格实际上内容不一致。或者不用exact函数,直接用公式=A4=B9。出错原因:这是从网页或数据库中导入数据时带来的不可见字符,造成了查找的错误。解决方案:在A列后插入几列空列,然后对A列进行分列操作(数据→分列),即可把不可见字符分离出去。
例:根据C,D列内容查找A列对应的D列内容,A1和C1单元格内容肉眼看上去完全一样, 可是B1单元格格式返回#value!,公式没有问题,那为什么会出现这个错误呢?A1和C1肉眼看上去一致,那是不是真的一致呢,我们用公式=exact(A1,C1) 或者公式=A1=C1,结果都显示TRUE,那说明A1和C1单元格内容是一致的,那为什么查找不到结果呢?会不会有不可见字符在作怪呢?试试clean函数,对A1和C1单元格都用clean函数清除不可见字符,拖动B1公式,发现B2显示结果了。出错原因可能从网页或数据库中导入数据时带来的不可见字符,造成了查找的错误。11、反向查找vlookup不支持产生的错误。
例10 如图14所示的表中,根据姓名查找工号,结果返回了错误。错误原因:vlookup不支持反向查找。查找的内容一定要在被查找的区域是第一列。1、 用if函数重组区域,让两列颠倒位置,或者直接通过复制粘帖把两列位置互换。=VLOOKUP(D8,IF({0,1},D2:D4,E2:E4),2,0) =INDEX(D2:D4,MATCH(D8,E2:E4,0))12、通配符引起的查找错误。
例12,如图15所示,根据区间查找提成返回错误值。错误原因:~用于查找通配符,如果在vlookup公式中出现,会被认为特定用途,非真正的~。如在表格中查找3*6 ,356,376也被查找到。
解决方法:用~~就可以表示查找~了。所以公式可以修改为=VLOOKUP(SUBSTITUTE(A8,"~","~~"),A2:B4,2,0)13、vlookup函数第1个参数不直接支持数组形式产生的错误
例13:如图18所示,同时查找A和C产品的和,然后用SUM求和。
错误原因: VLOOKUP第一个参数不能直接用于数组。解决方法:利用N/T+IF结构转化一下数组,公式修改为:=SUM(VLOOKUP(T(IF({1},A8:B8)),A2:B5,2,))或者用sumif函数解决,公式为=SUM(SUMIF(A2:A5,{"A","C"},B2:B5))五、跨表引用不同版本引用无效
14、在Excel2003版本引用Excel2007或者以上版本提示无效。
例如, 工作簿1 要查找的数据是Excel 2003 版本, 数据源在工作簿2, 版本为Excel 2007 或者以上版本,在工作簿1 的B2 单元格输入公式=Vlookup(A2,[ 工作簿2]Sheet1!$A:$B,2,0),提示如图19所示的错误:
如果公式改为=Vlookup(A2,[ 工作簿2]Sheet1!$A$1:$B$65536,2,0) 则不会提示错误,这是因为Excel 2003 版本最多只能承载256 列65536行数据,而Excel2007 或者以上版本可以承载1048576 行16384 列数据,当数据源引用的行数超过了要查找的数据所在工作表最多能承载的行数时,引用就无效了。解决方法:把低版本的Excel文件转换为高版本的文件,点击左上方的文件或office按钮,可以看到下面这个选项,点击转换,就可以把2003版本的文件转换为2007或以上版本的文件。
六、单元格格式设置错误公式显示不了结果
15、单元格只显示公式不显示公式结果。
【Ctrl+1】进入设置单元格格式,显示文本,当单元格格式为文本格式,只显示公式不显示结果。这个不仅仅对vlookup函数是这样的,其他函数也如此。
今天的分享到此结束,如果你能看到这里,对Excel或小编绝对是真爱啊。欢迎转发和收藏。关注我,让你少走弯路。
视频号:sunny姐教你学excel
作者聂美骐,原名聂春霞,微信号sunnynie,江西移动4年,鹅厂19年工作经历,腾讯内部Excel课程兼职讲师,2015年4月出版图书《Excel高手捷径:一招鲜,吃遍天》,同年12月在台湾出版繁体字版。2017年5月出版第二版《Excel职场手册:260招菜鸟变达人》。Excel交流QQ群:806295411,欢迎各位粉丝加入群交流。微信交流群已经满200人,如果需要入群请先加我的个人微信。点击阅读原文进入京东网购书网址。