分享

扎心!LOOKUP公式总出错?我总结了5大原因

 Excel教程平台 2023-05-09 发布于四川

哈喽,大家好。

上期内容,我们给大家讲解了LOOKUP的底层逻辑——二分法。

链接在此:看完这篇文章,我才真正懂得LOOKUP!

今天来给大家讲一讲“关于LOOKUP查找错误那些事儿”。

众所周知:

VLOOKUP是情绪派,如果参数写错,或者查找不到,大多数时候他会直接甩脸色,来个#N/A错误,你马上就知道有错,利于甄别、修正。

LOOKUP则是心机派,就算是查不到或者查找错误,大多数时候他也不会返回错误值,而是返回具体的一个值,这就增强了迷惑性,让一些人栽了跟头吃了亏。

今天咱们就来釜底抽薪,归纳整理,方便大家以后能无忧使用LOOKUP。

LOOKUP查找错误原因1:看着像升序排列实际不是升序排列

在二分法原理的文章中,我们讲述了LOOKUP在进行常规查询时,查找区域的值必须是升序排列,否则很可能得到错误的结果,如下图所示。

正确的操作是将A列进行升序处理,此处不再赘述。

重点来了,对于A列这类字母+数字的组合,需格外注意:

你以为的升序排列和Excel以为的升序排列,是不一样的

如下图所示,我们看工号这一列,从A1到A17,字母不变,数字从小到大,看着像是升序排列,但是用LOOKUP函数来查找时,结果却出错了。

通常情况下,字母和数字混合的数据,Excel是根据字符逐位比较的结果来排序的。

即A1,A10,A101,A102,A11,A111,A112,A12,这才是一组升序排列的数据。

下面,我们只需要选中这一列,点击Excel里的排序,选择升序,方能得到正确的结果。

搞不太明白的同学,可以打开Excel表,生成一组数据,自己试着去排序一下看看。

LOOKUP查找错误原因2:精确查找时没有使用精确查找套路公式

下面要查人员的销售金额。数据已经按人员进行了升序排列。但很显然最后一个查找是错误的,因为名单中根本没有辜鸿渐!

为何出现这种查找错误?原因是用错了LOOKUP的查找公式。

LOOKUP函数公式常用的有两种方式。

第一种就是其默认公式,如上面那样在升序排序下进行模糊匹配查找,可以查到小于等于查找值的值,再返回对应结果——最适合用于区间查找。

第二种就是精确查找套路公式只查找等于查找值的值,再返回对应结果,没有的则显示为#N/A错误。

如果上面使用精确查找套路公式,则得到正确结果。

LOOKUP查找错误原因3:漏写参数

1.漏掉一对括号

使用LOOKUP函数进行单条件查找时,其函数结构是:

=LOOKUP(1,0/(条件区域=条件),返回区域)

按照这个函数结构来写公式,一般都没啥问题。

但是一涉及到多条件查找,很多人就又状况百出了!

如下图所示,当我们要查找销售一部,级别为A的业绩,很多同学的公式写成了这样:

=LOOKUP(1,0/(B2:B14=F2)*(C2:C14=G2),D2:D14)

给大家解释一下现在这个公式的含义,即先用0去除以(B2:B14=F2)的值,再去乘(C2:C14=G2)的值,作为LOOKUP的查找区域。1是查找值,D2到D14是返回区域。

而正确的函数公式是先计算(B2:B14=F2)与(C2:C14=G2)的乘积,然后再用0来除以他们的积,作为LOOKUP的查找区域。

差别在哪,差别在于少了一组括号,千万不要小瞧这对小小的括号,有不少人在这里栽过跟头。

正确公式:=LOOKUP(1,0/((B2:B14=F2)*(C2:C14=G2)),D2:D14)

2.第三参数不完整

使用LOOKUP函数的时候,要注意查找区域和返回区域应该是一一匹配的。

不能一个是一列数据,一个是一个数据,如下图所示,查找的结果即为0。

正确的写法是:查找区域,A2到A14,是13个单元格;返回区域是D2到D14,也是13个单元格。

如果只写一个D2,那么就会默认返回区域是从D2开始横向往右数的13个单元格。

TIPS:

在返回区域写上D2:D3也能得到正确结果。第三参数为D2:D3,也就是在告诉LOOKUP函数,查找的方向是纵向,他会自动以查找区域为参照,自动扩展到相同的返回区域,即D2到D14。

LOOKUP查找错误原因4:数组使用错误

1.查找值不在数据区域的第一列或第一行

LOOKUP在微软官方,还介绍了一种使用方式:数组形式。

其函数结构为=Lookup(查找值,数据范围)

如下图所示,根据对照表来查找各个员工的绩效,就可以输入公式=LOOKUP(C2,$F$2:$G$5)

如果数据区域是多行多列的情况,LOOKUP需要在数据区域的第一行或者第一列查找指定的值,并返回数据区域的最后一行或最后一列的同位置的值。

比如下图所示,如果查找值不在数据区域的第一列,就会导致查找错误。

正确的公式写法是=LOOKUP(C2,$G$2:$H$5)

2.查找方向错误

如下图所示,当我们的数据区域有多列内容,用LOOKUP函数进行查找,又出错了?!

公式中的数据区域F2到J5,有4行5列数据,列数多于行数,那么LOOKUP函数会在第一行中查找“3045”,查找到第一行的最末值10%,然后返回最末行的100%。

TIPS:

LOOKUP函数的数组形式,当数据区域是多行多列,查找方向根据行列数而定。

①如果数组区域列数多于行数,LOOKUP 会在第一行中进行横向查找,然后返回末行值。

②如果数组区域行数等于或多于列数,LOOKUP 会在第一列中进行纵向查找,然后返回末列值。

LOOKUP查找错误原因5:文本不分大小写

和VLOOKUP一样,LOOKUP在进行查找的时候,文本不分大小写。

如下图所示,当我们输入公式 =LOOKUP(E2,A2:A13,B2:B13)

得到的结果就是张冠李戴,错到离谱。

咋办?请EXACT函数来帮帮忙,即可立马搞定。

在F2输入公式:=LOOKUP(1,0/EXACT(E2,A2:A13),B2:B13)

EXACT函数用于比较文本是否绝对相等。

TIPS:

或许有朋友看到过使用FIND函数来解决查找中的大小写区分的教程。的确可以用FIND函数区分大小写,但是在使用中需要特别谨慎——FIND检查的是否包含有查找值给出其位置数,并不检查数据是否绝对等于查找值。因此,假设上述的A列编号存在a103、a1031、a1032等,那么使用FIND函数得到的结果可能就是错误的。如下。

好的,以上就是今天的所有内容,感谢大家的观看。

    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多