Excel vlookup与index和match的区别
一、主体不同
1、vlookup:是Excel中的一个纵向查找函数。
2、index:是返回表或区域中的值或值的引用。
3、match:返回指定数值在指定数组区域中的位置。
二、功能不同
1、vlookup:是按列查找,最终返回该列所需查询序列所对应的值;与之对应的HLOOKUP是按行查找的。
2、index:返回表格或数组中的元素值,此元素由行号和列号的索引值给定。当函数 INDEX 的第一个参数为数组常量时,使用数组形式。
3、match:MATCH 函数可在单元格区域中搜索指定项,然后返回该项在单元格区域中的相对位置。
三、特点不同
1、vlookup:可以用来核对数据,多个表格之间快速导入数据等函数功能。
2、index:同时使用了 row_num 和 column_num 参数,INDEX 将返回 row_num 和 column_num 交叉处单元格中的值。
3、match:需要获得单元格区域中某个项目的位置而不是项目本身,则应该使用 MATCH 函数而不是某个 LOOKUP 函数。
参考资料来源:百度百科-MATCH函数
参考资料来源:百度百科-INDEX函数
参考资料来源:百度百科-VLOOKUP函数
excel函数中vlookup与index+match准确性方面两个是一样的,速度上vlookup比index+match快。具体有预算速度,取数方向,查找范围的三个方面的区别。
1、运算速度不同:
vlookup比index+match快,因为vlookup只调用一个函数,而index+match使用match的结果作为index的参数,调用两个函数。但是,在计算量较小的情况下,速度可以忽略不计。
2、取数方向不同:
vlookup函数只可正向取数,而index+match函数即可正向取数,也可反向取数。
3、查找范围不同:
vlookup正在查找的数据必须位于所选区域的第一列中,而index+match没有这样的约束。
参考资料来源:百度百科—Vlookup
参考资料来源:百度百科—index函数
参考资料来源:百度百科—MATCH函数
VLOOKUP 查找数组的第一列并移过行,然后返回单元格的值。如不够详细,再看:
Excel中的
在Excel中,
为返回在指定方式下与指定数值匹配的数组中元素的相应位置。如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用 MATCH 函数而不是 LOOKUP 函数。
语法
MATCH(lookup_value,lookup_array,match_type)
Lookup_value 为需要在数据表中查找的数值。
Lookup_value 为需要在 Look_array 中查找的数值。例如,如果要在电话簿中查找某人的电话号码,则应该将姓名作为查找值,但实际上需要的是电话号码。
Lookup_value 可以为数值(数字、文本或逻辑值)或对数字、文本或逻辑值的单元格引用。
Lookup_array 可能包含所要查找的数值的连续单元格区域。Lookup_array 应为数组或数组引用。
Match_type 为数字 -1、0 或 1。Match-type 指明 Microsoft Excel 如何在 lookup_array 中查找 lookup_value。
如果 match_type 为 1,函数 MATCH 查找小于或等于 lookup_value 的最大数值。Lookup_array 必须按升序排列:...、-2、-1、0、1、2、...、
、FALSE、TRUE。
如果 match_type 为 0,函数 MATCH 查找等于 lookup_value 的第一个数值。Lookup_array 可以按任何顺序排列。
如果 match_type 为 -1,函数 MATCH 查找大于或等于 lookup_value 的最小数值。Lookup_array 必须按降序排列:TRUE、FALSE、Z-A、...、2、1、0、-1、-2、...,等等。
如果省略 match_type,则假设为 1。
MATCH函数说明
函数 MATCH 返回 lookup_array 中目标值的位置,而不是数值本身。例如,MATCH("b",{"a","b","c"},0) 返回 2,即“b”在数组 {"a","b","c"} 中的相应位置。
查找文本值时,函数 MATCH 不区分大小写字母。
如果函数 MATCH 查找不成功,则返回错误值 #N/A。
如果 match_type 为 0 且 lookup_value 为文本,lookup_value 可以包含通配符、星号 (*) 和问号 (?)。星号可以匹配任何字符序列;问号可以匹配单个字符。
纵向查找函数,它与LOOKUP函数和
属于一类函数,VLOOKUP是按列查找的,HLOOKUP是按行查找的。
语法规则
该函数的语法规则如下: VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
参数 简单说明 输入数据类型
lookup_value 要查找的值 数值、引用或文本字符串
table_array 要查找的区域 数据表区域
col_index_num 返回数据在区域的第几列数 正整数
range_lookup 精确匹配 TRUE(或不填) /FALSE
Lookup_value参数说明
Lookup_value为需要在数据表第一列中进行查找的数值。Lookup_value 可以为数值、引用或文本字符串。
Table_array参数说明
Table_array为需要在其中查找数据的数据表。使用对区域或区域名称的引用。
col_index_num参数说明
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参数说明
Range_lookup为一逻辑值,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。如果 lookup_value 为 FALSE,函数 VLOOKUP 将查找精确匹配值,如果找不到,则返回错误值 #N/A。
示例
所示,我们要在A2:
2区域中提取100003、100004、100005、100007、100010五人的全年总计销量,并对应的输入到I4:I8中。一个一个的手动查找在数据量大的时候十分繁琐,因此这里使用
演示: 首先在I4单元格输入“=Vlookup(”,此时Excel就会提示4个参数。
Vlookup结果演示
第一个参数,很显然,我们要让100003对应的是I4,这里就输入“H4,” ; 第二个参数,这里输入我们要查找的区域(
),即“$A$2:$F$12,”; 第三个参数,“全年总计”是区域的第六列,所以这里输入“6”,输入“5”就会输入第四季度的项目了; 第四个参数,因为我们要精确的查找工号,所以留空即可。 最后补全最后的右括号“)”,得到公式“=VLOOKUP(H4,$A$2:$F$12,6)”,使用填充柄填充其他单元格即可完成查找操作。 VLOOKUP函数使用注意事项 说到VLOOKUP函数,相信大家都会使用,而且都使用得很熟练了。不过,有几个细节问题,大家在使用时还是留心一下的好。 一.VLOOKUP的语法 VLOOKUP函数的完整语法是这样的: VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) 1.括号里有四个参数,是必需的。最后一个参数range_lookup是个逻辑值,我们常常输入一个0字,或者False;其实也可以输入一个1字,或者true。两者有什么区别呢?前者表示的是完整寻找,找不到就传回错误值#N/A;后者先是找一模一样的,找不到再去找很接近的值,还找不到也只好传回错误值#N/A。这对我们其实也没有什么实际意义,只是满足好奇而已,有兴趣的朋友可以去体验体验。 2.Lookup_value是一个很重要的参数,它可以是数值、文字字符串、或参照地址。我们常常用的是参照地址。用这个参数时,有三点要特别提醒: A)参照地址的单元格格式类别与去搜寻的单元格格式的类别要一致,否则的话有时明明看到有资料,就是抓不过来。特别是参照地址的值是数字时,最为明显,若搜寻的单元格格式类别为文字,虽然看起来都是123,但是就是抓不出东西来的。 而且格式类别在未输入数据时就要先确定好,如果数据都输入进去了,发现格式不符,已为时已晚,若还想去抓,则需重新输入。 B)第二点提醒的,是使用时一个方便实用的小技巧,相信不少人早就知道了的。我们在使用参照地址时,有时需要将lookup_value的值固定在一个格子内,而又要使用下拉方式(或复制)将函数添加到新的单元格中去,这里就要用到“$”这个符号了,这是一个起固定作用的符号。比如说我始终想以D5格式来抓数据,则可以把D5弄成这样:$D$5,则不论你如何拉、复制,函数始终都会以D5的值来抓数据。 C) 用“&" 连接若干个单元格的内容作为查找的参数。在查找的数据有类似的情况下可以做到事半功倍。 3.Table_array是搜寻的范围,col_index_num是范围内的栏数。Col_index_num 不能小于1,其实等于1也没有什么实际用的。如果出现一个这样的错误的值#REF!,则可能是col_index_num的值超过范围的总字段数。 二.VLOOKUP的错误值处理。 我们都知道,如果找不到数据,函数总会传回一个这样的错误值#N/A,这错误值其实也很有用的。比方说,如果我们想这样来作处理:如果找到的话,就传回相应的值,如果找不到的话,我就自动设定它的值等于0,那函数就可以写成这样: =if(iserror(vlookup(1,2,3,0)),0,vlookup(1,2,3,0)) 这句话的意思是这样的:如果VLOOKUP函数返回的值是个错误值的话(找不到数据),就等于0,否则,就等于VLOOKUP函数返回的值(即找到的相应的值)。 这里面又用了两个函数。 第一个是
。它的语法是iserror(value),即判断括号内的值是否为错误值,如果是,就等于true,不是,就等于false。 第二个是
,这也是一个常用的函数的,后面有机会再跟大家详细讲解。它的语法是if(条件判断式,结果1,结果2)。如果条件判断式是对的,就执行结果1,否则就执行结果2。举个例子:=if(D2=””,”空的”,”有东西”),意思是如D2这个格子里是空的值,就显示文字“空的”,否则,就显示“有东西”。(看起来简单吧?其实编程序,也就是这样子判断来判断去的。) 三.含有VLOOKUP函数的工作表档案的处理。 一般来说,含有VLOOKUP函数的工作表,如果又是在别的档案里抓取数据的话,档案往往是比较大的。尤其是当你使用的档案本身就很大的时候,那每次开启和存盘都是很受伤的事情。 有没有办法把文件压缩一下,加快开启和存盘的速度呢。这里提供一个小小的经验。 在工作表里,点击工具──选项──计算,把上面的更新远程参照和储存外部连结的勾去掉,再保存档案,则会加速不少,不信你可以试试。 下面详细的说一下它的原理。 1.含有VLOOKUP函数的工作表,每次在保存档案时,会同时保存一份其外部连结的档案。这样即使在单独打开这个工作表时,VLOOKUP函数一样可以抓取到数值。 2.在工作表打开时,微软会提示你,是否要更新远程参照。意思是说,你要不要连接最新的外部档案,好让你的VLOOKUP函数抓到最新的值。如果你有足够的耐心,不妨试试。 3.了解到这点,我们应该知道,每次单独打开含有VLOOKUP函数的工作表时,里面抓取外部档案的数值,只是上次我们存盘时保存的值。若要连结最新的值,必须要把外部档案同时打开。