即Vlookup(查询值,查询范围,返回列数,匹配方式)
参数说明:
①lookup_value:必需,为需要在数据表第一列中进行查找的值,比如学号。Lookup_value 可以是数值、引用或文本字符串。当vlookup函数第一参数省略查找值时,表示用0查找。
②table_array:必需,为需要在其中查找数据的数据表。使用对区域或区域名称的引用。
③col_index_num:必需,为table_array 中查找数据的数据列序号。col_index_num 为 1时,返回 table_array 第一列的值,以此类推。如果col_index_num 大于 table_array 的列数, VLOOKUP 函数返回错误值#REF!;如果 col_index_num 小于1, VLOOKUP函数 返回错误值 #VALUE!。
④range_lookup:可选参数,为逻辑值,指明函数 VLOOKUP 查找时是精确匹配,还是近似匹配。如果为FALSE或0,则返回精确匹配,如果找不到,则返回错误值 #N/A;如果 range_lookup 为TRUE或1,函数 VLOOKUP 将查找近似匹配值,也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。如果range_lookup 省略,则默认为1。
注意:VLOOKUP函数查找规则从第一个数据开始,匹配第一个满足lookup_value则返回结果。
(2)作用:可用于匹配或查找信息,可用于将另一个表格的目标列按需查找的值映射到目标表格中。
(1)基本用法:根据单一列从另一张表格获取目标列值。
例:根据【score】sheet的学生名字从【student】sheet中获取学生年龄。D2单元格输入“=VLOOKUP(A:A,student!A:C,3)”,回车,下拉公式,结果如下图所示。
(2)结合其它函数,比如IFERROR函数
①利用IFERROR函数将错误值美化掉。
例:根据【score】sheet的学生名字从【student】sheet中获取学生年龄,并将查询不到的错误值#N/A赋值为“-”。D2输入“=IFERROR(VLOOKUP(A:A,student!A:C,3),"-")”,回车,下拉公式,结果如下图所示。
②利用IFERROR函数,先后根据不同查询的值即lookup_value获取目标列值,比如根据A列从另一个表table1映射(查找)不到目标信息就根据B列从另一个表table1获取目标值。
例:先根据学号获取年龄,获取不到根据姓名获取年龄。E2单元格输入“=IFERROR(VLOOKUP(A2,student!A2:D8,4,0),VLOOKUP(B2,student!B:D,3,0))” ,回车,下拉公式,结果如下图所示。
(3)多条件查询,比如根据A&B列到另一个表查询映射信息。
例:根据学号和姓名获取学生年龄。可以在查询数据的数据表student表中首列插入一个辅助列,输入“=B2&C2”,回车下拉公式,如下图所示。
然后在score表中E2输入“=IFERROR(VLOOKUP(A2&B2,student!A:E,5,0),"-")”,回车,下拉公式,结果如下图所示。
(1)查找区域table_array的首列必须含有查找的内容lookup_value,且查找数据的目标值必须在查找值之后。比如根据学号获取另一张表table1的性别信息,而查找数据的数据表table_array中第一列也是学号列(字段名可以不同),且性别列需在学号列之后,否则返回#N/A。
例:score表根据姓名从student表中获取学号信息。student表如下图所示。
在score表的E2单元格输入“=VLOOKUP(A2,student!A:B,1,0)”,回车下拉公式,结果如下图所示。
由图可知,返回结果全是#N/A,但是student中有张三李四等姓名,结果返回错误值是因为查找区域table_array的首列不含有查找的内容lookup_value,且查找数据的目标值在查找值之前。