1、VLOOKUP 函数教程大合集(入门+初级+进阶+高级+最高级+12 种常见错误)微软商务应用专家(juanniu) 2015-08-17 10:30前言:vlookup 函数是关注度最高的 excel 函数,今天把以前发布的 vlookup函数来一次大合集。包括以下内容:VLOOKUP 是一个查找函数,给定一个查找的目标,它就能从指定的查找区域中查找返回想要查找到的值。它的基本语法为:VLOOKUP(查找目标,查找范围,返回值的列数,精确 OR 模糊查找)下面以一个实例来介绍一下这四个参数的使用例 1:如下图所示,要求根据表二中的姓名,查找姓名所对应的年龄。公式:B13 =VLOOKUP(A
2、13,$B$2:$D$8,3,0)参数说明:1 查找目标:就是你指定的查找的内容或单元格引用。本例中表二 A 列的姓名就是查找目标。我们要根据表二的“姓名”在表一中 A 列进行查找。公式:B13 =VLOOKUP(A13,$B$2:$D$8,3,0)2 查找范围(VLOOKUP(A13,$B$2:$D$8,3,0) ):指定了查找目标,如果没有说从哪里查找,EXCEL 肯定会很为难。所以下一步我们就要指定从哪个范围中进行查找。VLOOKUP 的这第二个参数可以从一个单元格区域中查找,也可以从一个常量数组或内存数组中查找。本例中要从表一中进行查找,那么范围我们要怎么指定呢?这里也是极易出错的地方
3、。大家一定要注意,给定的第二个参数查找范围要符合以下条件才不会出错:A 查找目标一定要在该区域的第一列。本例中查找表二的姓名,那么姓名所对应的表一的姓名列,那么表一的姓名列(列)一定要是查找区域的第一列。象本例中,给定的区域要从第二列开始,即$B$2:$D$8,而不能是$A$2:$D$8。因为查找的“姓名”不在$A$2:$D$8 区域的第一列。B 该区域中一定要包含要返回值所在的列,本例中要返回的值是年龄。年龄列(表一的 D 列)一定要包括在这个范围内,即:$B$2:$D$8,如果写成$B$2:$C$8 就是错的。3 返回值的列数(B13 =VLOOKUP(A13,$B$2:$D$8,3,0)
4、)。这是 VLOOKUP 第 3 个参数。它是一个整数值。它怎么得来的呢。它是“返回值”在第二个参数给定的区域中的列数。本例中我们要返回的是“年龄”,它是第二个参数查找范围$B$2:$D$8 的第 3 列。这里一定要注意,列数不是在工作表中的列数(不是第4 列),而是在查找范围区域的第几列。如果本例中要是查找姓名所对应的性别,第 3 个参数的值应该设置为多少呢。答案是 2。因为性别在$B$2:$D$8 的第2 列中。4 精确 OR 模糊查找(VLOOKUP(A13,$B$2:$D$8,3,0) ),最后一个参数是决定函数精确和模糊查找的关键。精确即完全一样,模糊即包含的意思。第 4 个参数如果
5、指定值是 0 或 FALSE 就表示精确查找,而值为 1 或 TRUE 时则表示模糊。这里提醒大家切记切记,在使用 VLOOKUP 时千万不要把这个参数给漏掉了,如果缺少这个参数默为值为模糊查找,我们就无法精确查找到结果了。好了,关于 VLOOKUP 函数的入门级应用就说到这里,VLOOKUP 函数可不只是这么简单的查找,我们讲的还只是 1/10 的用法。其他的没法在一篇文章中说明。敬请期待“VLOOKUP 的使用方法-进阶篇”吧。VLOOKUP 函数的使用方法(初级篇)一、VLOOKUP 多行查找时复制公式的问题VLOOKUP 函数的第三个参数是查找返回值所在的列数,如果我们需要查找返回多列
6、时,这个列数值需要一个个的更改,比如返回第 2 列的,参数设置为 2,如果需要返回第 3 列的,就需要把值改为 3。如果有十几列会很麻烦的。那么能不能让第 3 个参数自动变呢?向后复制时自动变为 2,3,4,5。在 EXCEL 中有一个函数 COLUMN,它可以返回指定单元格的列数,比如=COLUMNS(A1) 返回值 1=COLUMNS(B1) 返回值 2而单元格引用复制时会自动发生变化,即 A1 随公式向右复制时会变成B1,C1,D1。这样我们用 COLUMN 函数就可以转换成数字 1,2,3,4。例:下例中需要同时查找性别,年龄,身高,体重。公式:=VLOOKUP($A13,$B$2:$
7、F$8,COLUMN(B1),0)公式说明:这里就是使用 COLUMN(B1)转化成可以自动递增的数字。二、VLOOKUP 查找出现错误值的问题。1、如何避免出现错误值。EXCEL2003 在 VLOOKUP 查找不到,就#N/A 的错误值,我们可以利用错误处理函数把错误值转换成 0 或空值。即:=IF(ISERROR(VLOOKUP(参数略)),“,VLOOKUP(参数略)EXCEL2007,EXCEL2010 中提供了一个新函数 IFERROR,处理起来比 EXCEL2003简单多了。IFERROR(VLOOKUP(),“)2、VLOOKUP 函数查找时出现错误值的几个原因A、实在是没有所
8、要查找到的值B、查找的字符串或被查找的字符中含有空格或看不见的空字符,验证方法是用=号对比一下,如果结果是 FALSE,就表示两个单元格看上去相同,其实结果不同。C、参数设置错误。VLOOKUP 的最后一个参数没有设置成 1 或者是没有设置掉。第二个参数数据源区域,查找的值不是区域的第一列,或者需要反回的字段不在区域里,参数设置在入门讲里已注明,请参阅。D、数值格式不同,如果查找值是文本,被查找的是数字类型,就会查找不到。解决方法是把查找的转换成文本或数值,转换方法如下:文本转换成数值:*1 或-或/1数值转抱成文本:“赵三“,“A002“;“杨五“,“A003“;“孙二“,“A004“二、V
9、LOOKUP 函数的多条件查找。VLOOKUP 函数需要借用数组才能实现多条件查找。例 2:要求根据部门和姓名查找 C 列的加班时间。分析:我们可以延用例 1 的思路,我们的努力方向不是让 VLOOKUP 本身实现多条件查找,而是想办法重构一个数组。多个条件我们可以用“销售赵三“,5;“人事杨五“,3;“销售赵三“,64、完成了数组的重构后,接下来就是 VLOOKUP 的基本查找功能了,另外公式中含有多个数据与多个数据运算(A2:A5“服务“;“人事“;“综合“;“财务“服务“;“人事“;“综合“;“财务“)&“!a:g“),7,0)你只需要修改以下部分,就可以直接套用A2:查找的内容“:大括
10、号内是要查找的多个工作表名称,用逗号分隔a:a:本例是姓名在各个表中的 A 列,如果在 B 列则为 b:ba:g:vlookup 查找的区域7:是 vlookup 第 3 个参数,相对应的列数。你懂的。公式思路说明:1、确定员工是在哪个表中。这里利用 countif 函数可以多表统计来分虽计算各个表中该员工存在的个数。2、利用 lookup(1,0/(数组),数组)结构取得工作表的名称3、利用 indirec 函数把字符串转换成单元格引用。4、利用 vlookup 查找。vlookup 函数的跨表查找,新手同学建议用 iferror+vlookup 的模式,公式虽然长,但容易理解且公式不容易出
11、错。如果你有一定基础,倒可以试试第 2 种方法。另外,如果工作表有几十个或更多,就需要使用宏表函数 get.workbook来获取所有工作表的名称,然后应用到公式中,具体的公式就不再写了。一、函数参数使用错误。第 1 种:第 2 个参数区域设置错误之 1。例:如下图所示,根据姓名查找龄时产生错误。错误原因: vlookup 函数第二个参数是查找区域,该区域的第 1 列有一个必备条件,就是查找的对象(A9),必须对应于区域的第 1 列。本例中是根据姓名查找的,那么,第二个参数姓名必须是在区域的第 1 列位置,而上述公式中姓名列是在区域 A1:E6 的第 2 列。所以公式应改为:=VLOOKUP(
12、A9,B1:E6,3,0)第 2 种:第 2 个参数区域设置错误之 2。例 2 如下图所示根据姓名查找职务时产生查找错误。错误原因:本例是根据姓名查找职务,可大家注意一下,第 2 个参数 B1:D6 根本就没有包括 E 列的职务,当然会产生错误了。所以公式应改为:=VLOOKUP(A9,B1:E6,4,0)第 3 种:第 4 个参数少了或设置错误。例 3,如下图所示根据工号查找姓名错误原因:vlookup 第四个参数为 0 时表示精确查找,为 1 或省略时表示模糊查找。如果忘了设置第 4 个参数则会被公式误以为是故意省略,按模糊查找进行。当区域也不符合模糊查找规则时,公式就会返回错误值。所以公
13、式应改为。=VLOOKUP(A9,A1:D6,2,0)或=VLOOKUP(A9,A1:D6,2,) 注:当参数为 0 时可以省略,但必须保留“,”号。今天所介绍的 13 错误是最简单的查找错误,可能有些同学已能轻松处理,明天咱们继续介绍 VLOOKUP 函数的其他查找错误,可能你处理起来就没这么轻松了。二、数字格式不同,造成查找错误。第 4 种查找为数字,被查找区域为文本型数字。例 4:如下图所示根据工号查找姓名,查找出现错误。错误原因:在 vlookup 函数查找过程中,文本型数字和数值型数字会被认为不同的字符。所以造成无法成功查找。解决方案:把查找的数字在公式中转换成文本型,然后再查找。即
14、:=VLOOKUP(A9&“,A1:D6,2,0)第 5 种查找格式为文本型数字,被查找区域为数值型数字。例 5:如下图所示根据工号查找姓名,查找出现错误错误原因:同 4解决方法:把文本型数字转换成数值型。即:=VLOOKUP(A9*1,A1:D6,2,0)三、引用方式使公式复制后产生错误。第 6 种没有正确的使用引用方式,造成在复制公式后区域发生变动引起错误。例 6,如下图所示,当 C9 的公式复制到 C10 和 C11 后,C10 公式返回错误值。错误原因:由于第二个参数 A2:D6 是相对引用,所以向下复制公式后会自动更改为 A3:D7,而 A10 中的工号 A01 所在的行,不在 A3
15、:D7 区域中,从而造成查找失败。解决方案:把第二个参数的引用方式由相对引用改为绝对引用即可。B9 公式改为:=VLOOKUP(A9,$A$2:$D$6,2,0)今天又介绍了三种常遇到的 vlookup 查找错误。明天我们将继续介绍 vlookup函数的其他查找错误。如果你也遇到了 vlookup 的错误,可以把公式通过微信平台发给我。四、多余的空格或不可见字符第 7 种 数据表中含有多余的空格。例 7 如下图所示,由于 A 列工号含有多余的空格,造成查找错误。错误原因:多一个空格,用不带空格的字符查找当然会出错了。解决方案: 1 手工替换掉空格。建议用这个方法2 在公式中用 trim 函数替
16、换空格而必须要用数据公式形式输入。即:=VLOOKUP(A9,TRIM(A1:D6),2,0) 按 ctrl+shift+enter 输入后数组形式为 =VLOOKUP(A9,TRIM(A1:D6),2,0)第 8 种:类空格但非空格的字符。在表格存在大量的“空格”,但又用空格无法替换掉时,这些就是类空格的不可见字符,这时可以“以其人之道还之其人之身”,直接在单元格中复制不可见字符粘贴到替换窗口,替换掉即可。第 9 种:不可见字符的影响例: 如下图所示的 A 列中,A 列看不去不存在空格和类空格字符,但查找结果还是出错。出错原因:这是从网页或数据库中导入数据时带来的不可见字符,造成了查找的错误
17、。解决方案:在 A 列后插入几列空列,然后对 A 列进行分列操作(数据 - 分列),即可把不可见字符分离出去。在日常 vlookup 函数查找错误示例中,第 8 种是最常见的一种错误之同学遇到vlookup 查找错误时,如果参数设置没有问题,就看一下数据表中有没有多余的空格。明天我们接着说第 1012 种查找错误类型,和 vlookup 的高级应用有关。第 10 种:反向查找 vlookup 不支持产生的错误。例 10 如下图所示的表中,根据姓名查找工号,结果返回了错误。错误原因:vlookup 不支持反向查找。解决方法:1 用 if 函数重组区域,让两列颠倒位置。=VLOOKUP(D8,IF
18、(0,1,D2:D4,E2:E4),2,0)2 用 index+match 组合实现。=INDEX(D2:D4,MATCH(D8,E2:E4,0)第 11 种:通配符引起的查找错误例 11,如下图所示,根据区间查找提成返回错误值。错误原因:用于查找通配符,如果在 vlookup 公式中出现,会被认为特定用途,非真正的。如在表格中查找 3*6 ,356,376 也被查找到。如果精确查找 3*6,需要使用,如下图所示。解决方法:用就可以表示查找了。所以公式可以修改为=VLOOKUP(SUBSTITUTE(A8,“,“),A2:B4,2,0)第 12 种:vlookup 函数第 1 个参数不直接支持数组形式产生的错误例 12:如下图所示,同时查找 A 和 C 产品的和,然后用 SUM 求和。错误原因: VLOOKUP 第一个参数不能直接用于数组。解决方法:利用 N/T+IF 结构转化一下数组,如果不了解 N/T+IF 结构用法,可以参考公式修改为:=SUM(VLOOKUP(T(IF(1,A8:B8),A2:B5,2,)vlookup 函数常见的 12 种错误我们介绍完了,鼓掌!