这里说的局限性并不是指这两个函数的局限性,而是对于刚接触这两个函数的人,会因为使用不当,忽视细节而让函数返回错误值。
一: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)
嗯。。大体就总结了这些