使用VLOOKUP函数的近似时会遇到的结果不正确(不是错误值!),你可以用下面的技巧解决这个问题!

返回


匹配

前言

VLOOKUP函数的近似匹配一般用于数值类型的分段查找,。不过在一些特殊情况下,我们可以在文本类型的查找中使用近似匹配。

比如,

用vlookup匹配不出来-VLOOKUP技巧-使用近似匹配如何找到真的匹配结果插图

我们需要在C5:F9单元格中输入VLOOKUP得到右表中相应的结果

公式

一般情况下,C5的公式如下:

=VLOOKUP($B5,$I$5:$O$10,MATCH(C$4,$I$4:$O$4,0),0)

其中用到了match函数,是为了动态返回不同的列。。

但是,如果这个表比较大,比如,有几千行甚至更多,这时,有可能你的Excel表格就会运行缓慢,每次输入一个数据,都要计算半天。

特别强调一下,此时,尽量不要用手动计算模式。它带来的问题远超过它的好处!切记

此时,我们可以将公式改成:

=VLOOKUP($B5,$I$5:$O$10,MATCH(C$4,$I$4:$O$4,0),1)

注意,前后两个公式的区别就是最后一个参数从0变成了1,VLOOKUP从精确匹配改为近似匹配。

这么一改,你的表格的计算速度会提升5-10倍(具体提升速度根据数据量不同而不同

用vlookup匹配不出来

,数据量越大,提升的越多)

这么改有一个要求,就是右边中必须按照第一列升序排序。不过相对于速度的提升,这个要求应该不算什么了。

问题

但是

用vlookup匹配不出来

,这个公式有一个问题:

用vlookup匹配不出来-VLOOKUP技巧-使用近似匹配如何找到真的匹配结果插图1

使用了近似匹配后,我们发现最后一行返回的结果不正确

“华筝”这个任务没有在右表中出现,如果用精确匹配的话,会返回一个#N/A的错误值,我们很容易就会知道出了问题,去补充右表就可以了。但是现在使用了近似匹配,并没有返回错误值,但是得到了错误的结果。我们就很难发现是否资料不完整。

这是由VLOOKUP近似匹配的原理导致的。只要用近似匹配,就会出现这个问题。

解决方案——二次查找

解决这个问题,只需要将公式改为:

=IF(VLOOKUP($B9,$I$5:$O$10,1,1)=$B9,VLOOKUP($B9,$I$5:$O$10,MATCH(E$4,$I$4:$O$4,0),1),"")

这里我们使用了IF公式,在条件部分,我们使用

VLOOKUP($B9,$I$5:$O$10,1,1)=$B9

VLOOKUP函数返回的是第一列,即姓名,我们判断的是这个返回的姓名是否等于我们的查找值,如果True,表示真的找到了匹配行,于是就返回原来的查找公式:

VLOOKUP($B9,$I$5:$O$10,MATCH(E$4,$I$4:$O$4,0),1)

如果False,表示找到了假的匹配行,返回一个空白单元格

下面是返回结果:

用vlookup匹配不出来-VLOOKUP技巧-使用近似匹配如何找到真的匹配结果插图2

不要担心两次VLOOKUP会导致速度变慢。这个影响微乎其微!

·end·

—如果喜欢,快分享给你的朋友们吧—

我们一起愉快的玩耍吧