1、图例细说 vlookup 函数(想学不会都难)一、 vlookup 基本用法目标:根据品名找到对应的价格;注意事项:品名必须位于价格的前面(左侧),品名与价格一一对应 ;公式解读:=VLOOKUP(D2,A2:B5,2,0) 根据( 查找品名)提取(数据区) 的,第二列单价数据,采用精确匹配 0. =VLOOKUP(查找内容,查找区域,需要的数据在查找区域的列数,准确查找) 上面的例子含义为:根据 d2 单元格的内容(稿纸),在 A2:B5 这个区域里找对应的价格,需要满足两个条件,品名在这个区域的第一列,并且每个品名只有一个;要找的数据(价格)在这个区域的第二列,按照品名准确查找。这个例子要
2、求根据工号找对应的籍贯,公式为=VLOOKUP(H14,C14:F17,3,0),这个公式里四个参数的含义根据前面的解释自己理解一下,如果明白了,再看后面的内容,这一点很重要!了解了 vlookup 四个参数的基本含义后,就可以使用这个函数来为我们解决一些数据引用的问题了,但是在遇到需要下拉公式的时候,还有一个地方需要注意,就是范围的绝对引用(引用的概念可以看这个帖子 http:/ 的籍贯可以正确找到,但是公式拉下来,KT001 的籍贯就错误了,观察KT001 这里的公式可以看到,公式发生了变化,=VLOOKUP(H15,C15:F18,3,0),范围从 C14:F17变成了 C15:F18,
3、而 KT001 已经不在这个范围了,所以就找不到。为了解决这样的错误,我们需要加工一下公式,改成=VLOOKUP(H14,$C$14:$F$17,3,0),或者=VLOOKUP(H14,C:F,3,0),朋友们可以自己试试,理解一下固定范围的含义。通过以上的叙述,对于同一个表格中的 vlookup 使用相信应该明白了其中的窍门,但是工作中往往会发生不在同一个表中引用的情况,比如明细表是全部的数据,而结果表里只需要引用一部分数据,这就是下面要说明的一种情况。常见错误总结:1、范围未锁定:常见于公式需要下拉或者横拉的情况,配合引用方式灵活处理即可;2、查找内容和数据源格式不对,常见于数据源为其他程
4、序导出的内容,数字类型为文本或者单元格内有空格等情况,需要仔细核查;3、vlookup 第四参数使用错误:vlookup 的第四参数是可以省略的,但是逗号不能省略,例如将=VLOOKUP(H14,C14:F17,3,0)写成=VLOOKUP(H14,C14:F17,3,) ,是可以的,但是=VLOOKUP(H14,C14:F17,3),这样就不对了,省略最后一个逗号和第四参数写成 1 是一样的效果,就是模糊匹配。关于精确匹配和模糊匹配不在这里解释,可以自己试试效果。这个概念将在其他帖子专门说明。二、vlookup 跨表引用如上图,就是一个跨 sheet 的引用,公式为:=VLOOKUP(A2,
5、明细表!C:F,4,0),具体操作方法看下面的动画,双击打开下面的图标即可psb.gif通常情况下不建议使用跨文件的引用,最好能将数据源与结果放在同一个文件的不同 sheet,如果一定要跨文件的话,方法也是一样的。三、vlookup 连续使用(第三参数不固定)掌握了跨表引用的方法后提高工作效率是一定的,但是有时候还是觉得不方便,比如下面的这个情况:要引用的不是一列内容了,虽然都可以用 vlookup,但是每列都要重新写公式,如果列数更多的话也是挺麻烦的一件事,这里就需要我们对 vlookup 的第三参数来做一个加工了,思路是这样的,对于年龄的引用,=VLOOKUP(I2,C1:F13,2,0)
6、,第三参数是 2,这个容易明白,如果想通过一个公式横着拉过去可以引用三列的值,只要我们可以让这个 2 拉的时候可以变成 3,4,就行了,因此,公式里套用一个函数就可以实现这个目的,j2 的公式修改为:=VLOOKUP($I2,$C$1:$F$13,COLUMN(B1),0),然后横拉下拉就可以了,为了确保第一参数的准确性,和第二参数范围的固定,我们分别做了混合引用和绝对引用,这个之前已经说过了。这个方法使用有个前提就是引用的列和数据源的列顺序位置都是一样的,如果只是引用数据源的一部分列或者列的顺序不一样就不能这样做了,比如下面的这个情况:公式为:=VLOOKUP($I2,$C$1:$F$13,
7、MATCH(J$1,$C$1:$F$1,0),0),这个就完全可以实现一个公式灵活匹配了,关于 match 可以看看http:/ vlookup 和 match 需要多练习。通过上面这三个讨论,对于单个条件的引用基本都可以解决了,但是实际当中很多时候是两个条件甚至三个条件一起作为引用条件的,这就是下面要说的问题。四、vlookup 合并条件引用 要求找到业务员在指定客户的销售额,找就是两个条件的引用实例,对于初学者而言,建议使用辅助列的方法来处理,具体如下:这里加了一个辅助列,辅助列用的=B2其实也可以输入一个 1 字,或者 true。两者有什么区别呢?前者表示的是完整寻找,找不到就传回错误值
8、#N/A;后者先是找一模一样的,找不到再去找很接近的值,还找不到也只好传回错误值#N/A。2Lookup_value 是一个很重要的参数,它可以是数值、文字字符串、或参照地址。我们常常用的是参照地址。用这个参数时,有三点要特别提醒:A)参照地址的单元格格式类别与去搜寻的单元格格式的类别要一致,否则的话有时明明看到有资料,就是抓不过来。特别是参照地址的值是数字时,最为明显,若搜寻的单元格格式类别为文字,虽然看起来都是 123,但是就是抓不出东西来的。而且格式类别在未输入数据时就要先确定好,如果数据都输入进去了,发现格式不符,已为时已晚,若还想去抓,则需重新输入。B)在使用参照地址时,有时需要将
9、lookup_value 的值固定在一个格子内,而又要使用下拉方式(或复制)将函数添加到新的单元格中去,这里就要用到“$”这个符号了,这是一个起固定作用的符号。比如说我始终想以 D5 格式来抓数据,则可以把 D5 弄成这样:$D$5,则不论你如何拉、复制,函数始终都会以 D5 的值来抓数据。C) 用“&“ 连接若干个 单元格 的内容作为查找的参数。在查找的数据有类似的情况下可以做到事半功倍。3Table_array 是搜寻的范围,col_index_num 是范围内的栏数。Col_index_num 不能小于 1,其实等于 1 也没有什么实际用的。如果出现一个这样的错误的值#REF!,则可能是
10、 col_index_num 的值超过范围的总字段数。选取 Table_array 时一定注意选择区域的首列必须与 lookup_value 所选取的列的格式和字段一致。比如 lookup_value 选取了“姓名”中的“张三”,那么 Table_array 选取时第一列必须为“姓名”列,且格式与 lookup_value 一致,否则便会出现#N/A 的问题。4.在使用该函数时,lookup_value 的值必须在 table_array 中处于第一列。二VLOOKUP 的错误值处理。如果找不到数据,函数总会传回一个这样的错误值#N/A,这错误值其实也很有用的。例如,如果我们想这样来作处理:如
11、果找到的话,就传回相应的值,如果找不到的话,就自动设定它的值等于 0,则函数可以写成这样:=if(iserror(vlookup(1,2,3,0),0,vlookup(1,2,3,0)在 Excel 2007 以上版本中,以上公式等价于=IFERROR(vlookup(1,2,3,0),0)这句话的意思是:如果 VLOOKUP 函数返回的值是个错误值的话(找不到数据),就等于 0,否则,就等于 VLOOKUP 函数返回的值(即找到的相应的值)。这里又用了两个函数。第一个是 iferror 函数。它的语法是 iferror(value),即判断括号内的值是否为错误值,如果是,就等于true,不是
12、,就等于 false。第二个是 if 函数,这也是一个常用的函数的,后面有机会再跟大家详细讲解。它的语法是 if(条件判断式,结果 1,结果 2)。如果条件判断式是对的,就执行结果 1,否则就执行结果 2。举个例子:=if(D2=”,”空的”,”有东西”),意思是如 D2 这个格子里是空的值,就显示文字 “空的”,否则,就显示“有东西”。(看起来简单吧?其实编程序,也就是这样子判断来判断去的。)在 Excel 2007 以上版本中,可以使用 iferror(value, value_if_error)代替以上两个函数的组合,该函数判断 value 表达式是否为错误值,如果是,则返回 value
13、_if_error,如果不是,则返回 value 表达式自身的值。三含有 VLOOKUP 函数的工作表档案的处理。一般来说,含有 VLOOKUP 函数的工作表,如果又是在别的档案里抓取数据的话,档案往往是比较大的。尤其是当你使用的档案本身就很大的时候,那每次开启和存盘都是很受伤的事情。有没有办法把文件压缩一下,加快开启和存盘的速度呢。这里提供一个小小的经验。在工作表里,点击工具选项 计算,把上面的更新远程参照和储存外部连结的勾去掉,再保存档案,则会加速不少,不信你可以试试。下面详细的说一下它的原理。1含有 VLOOKUP 函数的工作表,每次在保存档案时,会同时保存一份其外部连结的档案。这样即使
14、在单独打开这个工作表时,VLOOKUP 函数一样可以抓取到数值。2在工作表 打开时,微软会提示你,是否要更新远程参照。意思是说,你要不要连接最新的外部档案,好让你的 VLOOKUP 函数抓到最新的值。如果你有足够的耐心,不妨试试。3了解到这点,我们应该知道,每次单独打开含有 VLOOKUP 函数的工作表时,里面抓取外部档案的数值,只是上次我们存盘时保存的值。若要连结最新的值,必须要把外部档案同时打开。vlookup最容易出错的地方是查找区域的首列必须含有查找的内容。比方说 1 个表 a 列是序号 b 列是姓名 c 列是身份证你再 d 列输入其中的一个姓名,再 e1 得到其身份证的公式为=vlookup(d1,b:c,2,0)不能是=vlookup(d1,a:c,3,0)