Excel中VLOOKUP与INDEX+MATCH的应用技巧
VLOOKUP是工作中Excel中最常用的查函数,但遇到反向、双向等复杂的表格查,推荐使用INDEX+MATCH函数组合。
从两组函数比较来看,关键不同点:1、 VLOOKUP比INDEX+MACTH的速度要快,因为VLOOKUP只调用一个函数;而INDEX+MACTH函数联用,是通过MATCH函数返回指定内容所在的位置,而INDEX根据指定位置查询到位置所对应的数据(MACTH的结果作为INDEX的参数),需要调用了两个函数;2、在不做特殊处理的情况下,VLOOKUP只可正向取数,而INDEX+MACTH即可正向取数,也可反向取数。
另外,两组函数准确性方面两个是一样的。计算量不大的情况下,速度基本可忽略不计。
下面我们通过应用实例分别对两组函数及组合应用进行举例说明:
一、正向查
【例1】如下图所示,要求根据员工编号,查姓名。
在C17单元格中输入公式=VLOOKUP(B17,B2,C13,2,0),可实现根据员工编号查姓名的正向参照,同时也可输入公式=INDEX(C2:C13,MATCH(B17,B2:B13,0)),也可实现根据员工编号查姓名的正向查。
分析:
先利用Match函数根据员工编号在B列中查位置
=MATCH(B17,B2:B13,0)
在利用Index函数根据查到的位置从C列中取值。完整的公式即为:
excel中index函数的使用方法=INDEX(C2:C13,MATCH(B17,B2:B13,0))
二、反向查
【例2】如下图所示,要求根据姓名,查员工编号。
在B19单元格中输入=INDEX(B2:B13,MATCH(C19,C2:C13,0)),可实现根据姓名查员工编号的反向查。在B20单元格中输入=VLOOKUP(C20,B2:C13,1,0),则查出错“#NA”,即vlookup不能作反向查
三、多条件查
【例3】如下图所示,要求根据月份、员工编号、姓名,查应发工资。
在D24单元格中输入公式=VLOOKUP(A24&B24&C24,IF({1,0},A2:A13&B2:B13&C2:C13,D2:D
13),2,0),即可通过VLOOKUP函数实现多条件参照,同时也可输入公式=INDEX(F2:F13,MATCH
(A24,A2:A13,0),MATCH(B24,B2:B13,0),MATCH(C24,C2:C13,0))或者=INDEX(F2:F13,MATCH
(A24&B24&C24,A2:A13&B2:B13&C2:C13,0)),也可多条件查。
分析1,使用VLOOKUP函数事项多条件查:
首先要考虑的是多个条件合并在一起来查,我们在空白单元格输入公式:=A24&B24&C24,就可以看到三个条件字段连接在了一起
同样的原理,原始区域三列也可以合并在一起。我们选中部分空单元格,输入公式:
=A2:A13&B2:B13&C2:C13。Ctrl+Shift+Enter三键运行公式,月份、员工编号和姓名三列也合并在了一起。
接下来,利用IF函数第一参数的数组化来把刚才生成的内容和需要查询的内容(应发工资)连接起来:=IF({1,0},A2:A13&B2:B13&C2:C13,D2:D13),同样按数组方式Ctrl+Shift+
Enter三键运行公式。
这个时候的VLOOKUP函数实际运营效果就是单一条件的正向查。多个条件已经合并成一个,对应原始区域变成了两列,合并后的公式为:VLOOKUP(A24&B24&C24,IF({1,0},A2:A13
&B2:B13&C2:C13,D2:D13),2,0)
分析2,使用INDEX+MATCH组合函数事项多条件查:
由于match的第二个参数可以支持合并后的数组,所以可以直接进行合并查:
=MATCH(A24&B24&C24,A2:A13&B2:B13&C2:C13,0)
查到后用INDEX取值
=INDEX(F2:F13,MATCH(A24&B24&C24,A2:A13&B2:B13&C2:C13,0))
由于公式中含有数组运算(一组数同另一组数同时运算),所以公式需要按Ctrl+Shift+
Enter三键完成输入。
当然,也可以通过MATCH函数,在A、B、C列相应区域同时对对应内容形成并列查
=MATCH(A24,A2:A13,0),MATCH(B24,B2:B13,0),MATCH(C24,C2:C13,0)
然后在利用Index函数根据查到的位置从F列取值
=INDEX(F2:F13,MATCH(A24,A2:A13,0),MATCH(B24,B2:B13,0),MATCH(C24,C2:C13,0))
三、双向查
【例4】如下图所示,要求根据月份、项目,查费用发生金额
分析:
先用MATCH函数查费用项目在A列中的位置
=MATCH(B56,A48:A52,0)
在用MATCH函数查月份在第一行中的位置
=MATCH(A56,B47:D47,0)
最后用INDEX根据行数和列数提取数值
INDEX(区域,行数,列数)
=INDEX(B48:D52,MATCH(B56,A48:A52,0),MATCH(A56,B47:D47,0))
附:相关函数介绍
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
MATCH(lookup-value,lookup-array,match-type)
INDEX(array,row-num,column-num)
1、 VLOOKUP函数(纵向查函数)
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
lookup_value为需要在数据表第一列中进行查的数值。Lookup_value 可以为数值、引用或文本字符串。
Table_array为需要在其中查数据的数据表。使用对区域或区域名称的引用。
col_index_num为table_array 中查数据的数据列序号。col_index_num 为 1 时,返回 table_array 第一列的数值,col_index_num 为 2 时,返回 table_array 第二列的数值,以此类推。
Range_lookup为一逻辑值,为false或0 ,则返回精确匹配,如果不到,则返回错误值 #N/A;为TRUE或1,函数 VLOOKUP 将查近似匹配值,如果不到精确匹配值,则返回小于 lookup_value 的最大数值。
2.MATCH函数(返回指定内容所在的位置)
MATCH(lookup-value,lookup-array,match-type)
lookup-value:表示要在区域或数组中查的值,可以是直接输入的数组或单元格引用。
lookup-array:表示可能包含所要查的数值的连续单元格区域,应为数组或数组引用。
match-type:表示查方式,用于指定精确查(查区域无序排列)或模糊查(查区域升序排列)。取值为-1、1、0 。其中0为精确查。
3.INDEX函数(返回制定位置中的内容)
INDEX(array,row-num,column-num)
array:要返回值的单元格区域或数组。
row-num:返回值所在的行号。
column-num:返回值所在的列号。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论