Excel数据分析第三讲(VLookup函数)
在本课程中,我们将学习和掌握VLookup函数。
Excel提供两个Lookup函数,一个是VLookup,另一个是HLookup。区别是VLookup是纵向查找,HLookup是横向查找。在实际使用中VLookup用的比较频繁,所以今天的课程将着重讲解VLookup。
首先说说VLOOKUP的语法规则。该函数的语法规则如下:
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数说明
Lookup_value为需要在数据表第一列中进行查找的数值。Lookup_value可以为数值、引用或文本字符串。当vlookup函数第一参数省略查找值时,表示用0查找。
Table_array为需要在其中查找数据的数据表。使用对区域或区域名称的引用。
col_index_num为table_array中查找数据的数据列序号。col_index_num为 1 时,返回 table_array 第一列的数值,col_index_num 为 2 时,返回 table_array 第二列的数值,以此类推。如果 col_index_num 小于1,函数 VLOOKUP 返回错误值#VALUE!;如果col_index_num 大于 table_array 的列数,函数 VLOOKUP 返回错误值#REF!。
Range_lookup为一逻辑值,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为FALSE或0,则返回精确匹配,如果找不到,则返回错误值 #N/A。如果 range_lookup为TRUE或1,函数 VLOOKUP 将查找近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value 的最大数值。如果range_lookup 省略,则默认为1。
前三个参数都比较简单,下面我们用一个例子来着重说明第四个参数的用法。我们的示例文件如下图所示
上图中D列代表一个人的收入,E列代表税率。我们用前面学过的知识把D6:E9这个区域命名为Lookup,如下图所示
接下来我们看看如何根据收入值来得到相对应的税率。假设这个人收入是29000,我们在E15输入公式=VLOOKUP(D15,Lookup,2,TRUE),(见下图)。该公式第一个参数D15(29000)就是我们要查找的值,第二个参数Lookup是我们刚刚定义的查找范围(D6:E9),第三个参数2表示返回查找范围的第二列的数值,最后一个参数TRUE表示执行的是模糊查询,意思是在D6:E9这个范围内找一个小于29000的最大值,通过查看和比较数据,10000(D7)是这次匹配的结果(模糊查询),对应的第二列取值为0.3,所以返回的结果是0.3(见下图)
如果我们在F15输入公式=VLOOKUP(D15,Lookup,2, FALSE),也就是说把最后一个参数改成FALSE,结果会是什么?
没错,结果是N/A,因为FALSE代表精确匹配,29000在D6:E9这个范围内找不到可以精确匹配的值,所以返回N/A。(如下图)
最后我们再举一个例子结束今天的课程。下图是一个产品ID和产品价格对照表。
我们需要写一个公式,通过给定产品ID获取相对应的产品价格。我们首先把H11:I15这个区域命名为Lookup2,假设我们要查找的产品ID是B2211,下面我们分别用以下两个公式来查找
=VLOOKUP(‘B2211’,Lookup2,2,TRUE)
=VLOOKUP(‘B2211’,Lookup2,2,FALSE)
大家思考一下返回的结果是什么?
当使用公式=VLOOKUP(‘B2211’,Lookup2,2,TRUE)查找时我们得到的结果是3.5
当使用公式=VLOOKUP(‘B2211’,Lookup2,2,FALSE)查找时我们得到的结果是5.2
这里解释一下当用公式=VLOOKUP(‘B2211’,Lookup2,2,TRUE)查找时为何得到的结果是3.5,因为最后一个参数是TRUE,当参数是TRUE,同时被查找的列的值是升序排列,Excel才会先看看是否可以找到精确匹配值。这里被查找的列的值没有按照升序排列,所以返回产品A134对应的价格$3.5。
大家可以按照下图所示把产品ID按升序排序,可以看到现在两个公式返回同样的结果。
微信扫一扫 关注"人人都是数据分析工程师"