在使用EXCEL时,有时候需要从列表中根据特征数据查找返回相应的数据记录,此时就要用到搜索函数,VLOOKUP就是其中之一,并且是使用频率较高的函数之一。
![](https://img.kancloud.cn/36/25/36257345e953d7b5f7ac2cbc3d137df3_854x346.png)
VLOOKUP函数有四个参数,VLOOKUP(lookup\_value, table\_array, col\_index\_num, \[range\_lookup\]),为了便于理解,这里用公式:=VLOOKUP(F2,A2:D20,2,0)对照说明,第一个参数是要在表格或区域的第一列中搜索的值,如公式中的F2,参数可以是值或引用。
![](https://img.kancloud.cn/45/d9/45d99a08509b5d166072e6d1a2cee13e_656x415.png)
第二参数是包含数据的单元格区域(A2:D20),数据可以是文本、数字或逻辑值,字母不区分大小写,就是查找F2单元格中的数据位于A2:A20的哪一行,如下图中查找到F2位于工作表的第8行。
![](https://img.kancloud.cn/ae/5d/ae5d141b76ec7e5e5ca0e0ba0a1186dd_700x433.png)
第三参数是指定返回匹配值的列号, 参数为 1 时,返回区域中第一列中的值,参数为 2 时,返回第二列中的值,依此类推,如公式:=VLOOKUP(F2,A2:D20,2,0)的第三参数为2,就是返回A2:D20中第二列,也就是B列中某行的值,如果改成3,就是返回C列中某行的值。
![](https://img.kancloud.cn/fc/b2/fcb2fc26a757828d2b82cdb9b4cca59b_694x429.png)
第四参数是逻辑值TRUE或FALSE,常写成1或0,如果为TRUE或被省略,则返回精确匹配值或近似匹配值,如果找不到精确匹配值,则返回小于搜索值的最大值,为TRUE或被省略,区域中的首列必须按升序排列。如果为FALSE,则首列中的值无须排序,只查找精确匹配值。上面公式中的0,就是指的精确查找,必须返回本人的成绩。
在使用公式时,为了填充方便,常常对公式中的引用加绝对引用符$限定行或列,达到填充时引用行不变、列不变或行列均不变的目的。如上面的公式,为了保证下拉时引用区域的行不变,就要对行号加以限定,但F2的行号不能限定,因为向下填充时,行号是不断变化的,G2公式为:=VLOOKUP(F2,A$2:D$20,2,0)
![](https://img.kancloud.cn/59/0a/590a4481b36b5c78e0b9538b2c491c41_558x422.png)
为了向右填充,还必须限定列标:=VLOOKUP($F2,$A$2:$D$20,2,0)
![](https://img.kancloud.cn/b2/78/b278dfbcf7ce8ab66b787e506bd23fd1_554x420.png)
但此时发现,直接向右填充时,返回的数据不对,因为返回的列序号没有跟随改变,始终返回的第2列数据,所以,还必须将返回列序号也跟随改变才能达到仅使用一个公式就能满足填充要求,这里使用列标函数COLUMN配合:=VLOOKUP($F2,$A$2:$D$20,COLUMN(B:B),0)
![](https://img.kancloud.cn/af/85/af856f1ac4b4cb407e1818eec9d61a92_676x415.png)
![](https://img.kancloud.cn/df/7f/df7f5a02f70d68d70841646747e1cd83_681x414.png)
如果列表区域中无其它数据,则引用时,可直接引用整列,不必带入行号:=VLOOKUP($F2,$A:$D,COLUMN(B:B),0),公式看上去简短些且不容易出错。
![](https://img.kancloud.cn/3f/bc/3fbc9a8e3c72dda9b374709a838cd517_704x426.png)