Excel中lookup与vlookup局限性二三事

这里说的局限性并不是指这两个函数的局限性,而是对于刚接触这两个函数的人,会因为使用不当,忽视细节而让函数返回错误值。

一:lookup

     目前在网上关于lookup使用的方法有两种:

一个是:lookup(查找值,查找区域,返回区域);另一个是:lookup(1,0/(查找值=查找列),返回列);

第一个就是官方给出的lookup函数的用法,但是使用这种方法需要保证一点:查找区域一定是升序排序的

至于为什么这就要从lookup函数的查找原理说起了,lookup使用的查找方式是二分查找,这样的好处就是查找速度非常快,当然缺点也非常明显。

对于那些我们没有办法去给他排序,或者碰到查找的区域是字符而不是数字,没有顺序可言的情况怎么办呢?

这就衍生出了第二种方法,这种方法不用进行排序即可。

这种方法进行了错误处理:函数中第二个参数仍然是查找区域,但是它对查找区域的值进行了转换。如图

他将查找区域中对应的值转换为0,其余转换为了错误值,解决了需要升序才能进行排序的问题。

当然了lookup函数还是会出现“错误情况”的,大多数错误情况和下面的vlookup函数一样,我放在下面介绍。

二、vlookup函数

没有找到关于vlookup函数实现原理的解释,但是它确实不用必须升序了。

使用方法:vlookup(查找值,查找范围,返回值在查找区域中的列数,是否近似匹配)

具体使用方法不细讲了,很简单。

但是有的时候我们不得不面对这样一个问题,如果我们想返回的结果列在查找区域前面呢?

第三个参数数不能为负数的,那么我们就需要转换一下。

使用方法:vlookup(查找值,if({1,0},查找列,返回列)2,0);

if函数的使用方法:第一个参数为1(TRUE)返回第二个参数,否则返回第三个参数

如果当第一个参数同时为1,0的时候会怎样呢?他会同时返回第二个和第三个参数。

所以相当于把vlookup函数的查找区域转换成了if函数的两个返回值,所以应该明白怎么回事了吧。

这个转换和上面说的lookup函数本质上其实一样。会用一个就够了

重点说说vlookup函数和变形后的lookup函数易错点:

参考文章:https://www.youideal.net/cms/a/18419.html,图文来自这篇文章,如侵权立删。

一:

明明有王明却没有查到

原因:有看不见的空格,影响了结果

二:=VLOOKUP(D2,A:B,2)

 

两个格子内容完全一致,返后结果仍然错误。

原因:公式应该加上一个参数,值为0,公式的第四个参数表示是否近似匹配

这里应该为精确匹配,公式应该是=VLOOKUP(D2,A:B,2,0)

至于精确匹配和模糊匹配的区别,好像前者是遍历,后者是二分。

前者找不到就返回错误,后者会返回小于其最接近的一个。

三:

公式没有问题,数字也一样,可是又错了。

原因:这又是一个初学者头疼的问题,那就是单元格格式

A列是用文本类型存储的数字,也就是说其在计算机内部的存储方式是字符串

而E列的单元格格式是常规,也就是用数字型存储的646这个数字。

进行比较的时候当然就不一样了。

解决方法:转换单元格格式(右键-》设置单元格格式)

或者改一下公式:

修改公式为(连接空字符&“”转换成文本格式,如果是文本转数字则用*1方法转换)=VLOOKUP(E2&"",A:C,2,0) 

嗯。。大体就总结了这些

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章