在Excel中,VLOOKUP函数应该是最受关注的函数之一了。关于VLOOKUP函数,在网上有数不清的讨论和文章。我对其进行了一些整理,供大家进一步理解和运用VLOOKUP函数时参考。
在Excel中,VLOOKUP函数应该是最受关注的函数之一了。关于VLOOKUP函数,在网上有数不清的讨论和文章。我对其进行了一些整理,供大家进一步理解和运用VLOOKUP函数时参考。
当你想从表中提取信息时,Excel的VLOOKUP函数是一个很好的解决方案。从表中动态查找和获取信息的能力给许多用户带来了全新的改变,你到处都可以发现VLOOKUP。
尽管VLOOKUP相对容易使用,但也容易出错。其中一个原因是VLOOKUP有一个主要的设计缺陷,默认情况下,假定你认为的是近似匹配,但这可能并不是你的本意。因此,会导致看起来结果正常但实际上是错误的。
1.VLOOKUP是如何运行的
VLOOKUP是一个查找函数,可以获取表中的数据。在VLOOKUP中的“V”代表垂直,意味着表中的数据必须垂直地排列,即数据在行中。
如果你有一个结构良好的表,信息垂直排列,左边有一列可以用来匹配查找的数据,那么可以使用VLOOKUP。
VLOOKUP要求表结构化,在左侧列中显示查找值,在右侧任意列中显示想要获取的数据(结果值)。当使用VLOOKUP时,假设表中的每列都从左侧(查找列)列始编号。要从特定列中获取值,简单地提供合适的数字作为“列索引”即可。在下面的例子中,查找电子邮件地址,因此使用数字4作为列索引:
图1
在图1所示的表中,员工ID位于左侧第1列,电子邮件地址在右侧的第4列。
要使用VLOOKUP,要提供4个参数:
要查找的值(lookup_value)
组成表的单元格区域(table_array)
要获取的结果所在的列编号(column_index)
匹配模式(range_lookup,TRUE=近似匹配,FALSE=精确匹配)
2.VLOOKUP仅向右查找
可能VLOOKUP最大的局限是仅能向右查找来获取数据。这意味着VLOOKUP仅能获取表中第一列右侧列的数据。当查找值在第一列(最左侧列)时,这个限制没有多大意义,因为所有其他列已经在右侧。但是,如果查找列在表里的某个位置,则只能从该列右侧的列中查找值。还必须为VLOOKUP提供一个以查找列开始的更小的表。
图2
使用INDEX和MATCH代替VLOOKUP可以克服这个局限。
3.VLOOKUP总是查找第一个匹配值
如果查找列包含重复值,那么VLOOKUP将仅匹配找到的第1个值。如果表中的第1列没有重复值,这显然不是问题。但是,如果第1列包含重复值,那么VLOOKUP将仅匹配第1个值。例如,使用VLOOKUP查找名字,虽然表中有两个“Janet”,但VLOOKUP仅匹配第1个:
图3
4.VLOOKUP不区分大小写
查找值时,VLOOKUP不会处理大写和小写文本差异。对于VLOOKUP,产品代码“PQRF”与“pqrf”相同。下面的示例中,查找大写的“JANET”,但VLOOKUP不会区分大小写,因此简单地匹配“Janet”,因为这是找到的第1个匹配:
图4
5.VLOOKUP有两种匹配模式
VLOOKUP有两种操作模式:完全匹配和近似匹配。大多数情况下,可能想使用VLOOKUP的完全匹配模式。当你想要基于某种唯一键(例如,基于产品代码的产品信息或者基于电影名称的电影数据)查找信息时,这是有意义的:
图5
在单元格H6中的公式基于完全匹配电影名称来查找年:
=VLOOKUP(H4,B5:E9,2,FALSE)
但是,如果不匹配唯一ID,而是查找“最佳匹配”或者“最佳类别”,则需要使用近似匹配。例如,可能要根据重量查找邮资,根据收入查找税率,根据每月销售额查找佣金率。在这些情况下,可能无法在表中找到精确的查找值,相反,想要VLOOKUP来为提供的查找值获得最佳匹配。
图6
在单元格D5中的公式使用近似匹配获取正确的佣金率:
=VLOOKUP(C5,$G$5:$H$10,2,TRUE)
6.注意:VLOOKUP默认情形下使用近似匹配
第4个参数,称之为“range_ lookup”控制着VLOOKUP的完全和近似匹配。
对于完全匹配,使用FALSE或者0。对于近似匹配,设置range_lookup为TRUE或1:
=VLOOKUP(value,table,column,TRUE) //近似匹配
=VLOOKUP(value,table,column,FALSE) //完全匹配
然而,第4个参数range_lookup是可选的,默认值是TRUE,这意味着VLOOKUP默认情形下进行近似匹配。当进行近似匹配时,VLOOKUP假定表已排序并执行二分查找。在二分查找时,如果VLOOKUP找到完全匹配的值,则从该行返回一个值。但是,如果VLOOKUP遇到大于查找值的值,将从前一行返回一个值。
这种默认设置非常危险,因为许多人无意中将VLOOKUP保留在默认模式下,当表未排序时可能导致错误的结果。
为了避免这个问题,确保在想要完全匹配时使用FALSE或0作为第4个参数。
(未完待续……)