关于VLOOKUP函数的用法
“Lookup”的汉语意思是“查找”,在Excel中与“Lookup”相关的函数有三个:VLOOKUP、HLOOKUO和LOOKUP。下面介绍VLOOKUP函数的用法。
一、功能
在表格的首列查找指定的数据,并返回指定的数据所在行中的指定列处的数据。
二、语法 标准格式:
VLOOKUP(lookup_value,table_array,col_index_num , range_lookup)
三、语法解释
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)可以写为:
VLOOKUP(需在第一列中查找的数据,需要在其中查找数据的数据表,需返回某列值的列号,逻辑值True或False)
1.Lookup_value为“需在数据表第一列中查找的数据”,可以是数值、文本字符串或引用。 2.Table_array 为“需要在其中查找数据的数据表”,可以使用单元格区域或区域名称等。 ⑴如果 range_lookup 为 TRUE或省略,则 table_array 的第一列中的数值必须按升序排列,否则,函数 VLOOKUP 不能返回正确的数值。
如果 range_lookup 为 FALSE,table_array 不必进行排序。
⑵Table_array 的第一列中的数值可以为文本、数字或逻辑值。若为文本时,不区分文本的大小写。
3.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!。 4.Range_lookup 为一逻辑值,指明函数 VLOOKUP 返回时是精确匹配还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值,也就是说,如果找不到精确匹配值,则返回小于lookup_value 的最大数值;如果 range_value 为 FALSE,函数 VLOOKUP 将返回精确匹配值。如果找不到,则返回错误值 #N/A。
四、应用例子
A B C D 1 编号 姓名 工资 科室 2 2005001 周杰伦 2870 办公室 3 2005002 萧亚轩 2750 人事科 4 2005006 郑智化 2680 供应科 5 2005010 屠洪刚 2980 销售科 6 2005019 孙楠 2530 财务科 7 2005036 孟庭苇 2200 工 会
A列已排序(第四个参数缺省或用TRUE)
VLOOKUP(2005001,A1:D7,2,TRUE) 等于“周杰伦” VLOOKUP(2005001,A1:D7,3,TRUE) 等于“2870” VLOOKUP(2005001,A1:D7,4,TRUE) 等于“办公室” VLOOKUP(2005019,A1:D7,2,TRUE) 等于“孙楠” VLOOKUP(2005036,A1:D7,3,TRUE) 等于“2200” VLOOKUP(2005036,A1:D7,4,TRUE) 等于“工 会” VLOOKUP(2005036,A1:D7,4) 等于“工 会”
若A列没有排序,要得出正确的结果,第四个参数必须用FALAE VLOOKUP(2005001,A1:D7,2,FALSE) 等于“周杰伦” VLOOKUP(2005001,A1:D7,3,FALSE) 等于“2870” VLOOKUP(2005001,A1:D7,4,FALSE) 等于“办公室” VLOOKUP(2005019,A1:D7,2,FALSE) 等于“孙楠” VLOOKUP(2005036,A1:D7,3,FALSE) 等于“2200” VLOOKUP(2005036,A1:D7,4,FALSE) 等于“工 会”
五、关于TRUE和FALSE的应用 先举个例子,假如让你在数万条记录的表格中查找给定编号的某个人,假如编号已按由小到大的顺序排序,你会很轻松地找到这个人;假如编号没有排序,你只好从上到下一条一条地查找,很费事。
用VLOOKUP查找数据也是这样,当第一列已排序,第四个参数用TRUE(或确省),Excel会很轻松地找到数据,效率较高。当第一列没有排序,第四个参数用FALSE,Excel会从上到下一条一条地查找,效率较低。
笔者觉得,若要精确查找数据,由于计算机运算速度很快,可省略排序操作,直接用第四个参数用FALSE即可。
HLOOKUP 函数
在表格或数值数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)的首行查找指定的数值,并在表格或数组中指定行的同一列中返回一个数值。当比较值位于数据表的首行,并且要查找下面给定行中的数据时,请使用函数 HLOOKUP。当比较值位于要查找的数据左边的一列时,请使用函数 VLOOKUP。
HLOOKUP 中的 H 代表“行”。 语法
HLOOKUP(lookup_value,table_array,row_index_num,range_lookup)
Lookup_value 为需要在数据表第一行中进行查找的数值。Lookup_value 可以为数值、引用或文本字符串。
Table_array 为需要在其中查找数据的数据表。使用对区域或区域名称的引用。
Table_array 的第一行的数值可以为文本、数字或逻辑值。 如果 range_lookup 为 TRUE,则 table_array 的第一行的数值必须按升序排列:...-2、-1、0、1、2、„、A-Z、FALSE、TRUE;否则,函数 HLOOKUP 将不能给出正确的数值。如果 range_lookup 为 FALSE,则 table_array 不必进行排序。 文本不区分大小写。
将数值按升序排列(从左至右)。有关详细信息,请参阅排序数据。
Row_index_num 为 table_array 中待返回的匹配值的行序号。Row_index_num 为 1 时,返回 table_array 第一行的数值,row_index_num 为 2 时,返回 table_array 第二行的数值,以此类推。如果 row_index_num 小于 1,函数 HLOOKUP 返回错误值 #VALUE!;如果 row_index_num 大于 table_array 的行数,函数 HLOOKUP 返回错误值 #REF!。
Range_lookup 为一逻辑值,指明函数 HLOOKUP 查找时是精确匹配,还是近似匹配。如果为 TRUE 或省略,则返回近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。如果 lookup_value 为 FALSE,函数 HLOOKUP 将查找精确匹配值,如果找不到,则返回错误值 #N/A。 注解
如果函数 HLOOKUP 找不到 lookup_value,且 range_lookup 为 TRUE,则使用小于 lookup_value 的最大值。
如果函数 HLOOKUP 小于 table_array 第一行中的最小数值,函数 HLOOKUP 返回错误值 #N/A。
如果 range_lookup 为 FALSE 且 lookup_value 为文本,则可以在 lookup_value 中使用通配符、问号 (?) 和星号 (*)。问号匹配任意单个字符;星号匹配任意字符序列。如果要查找实际的问号或星号,请在该字符前键入波形符 (~)。
示例
如果将示例复制到一个空白工作表中,可能会更容易理解该示例。
如何复制示例
创建一个空白工作簿或工作表。选择“帮助”主题中的示例。 注释 不要选择行或列标题。
从“帮助”中选择示例按 Ctrl+C。在工作表中,选择单元格 A1,然后按 Ctrl+V。要在查看结果和查看返回结果的公式之间进行切换,请按 Ctrl+`(重音符),或在“公式”选项卡上的“公式审核”组中,单击“显示公式”按钮。 1 2 3 4
A B C
Axles Bearings Bolts 4 4 9 5 7 10 6 8 11
公式 说明(结果)
=HLOOKUP(\"Axles\在首行查找 Axles,并返回同列中第 2 行的值。(4) =HLOOKUP(\"Bearings\在首行查找 Bearings,并返回同列中第 3 行的值。(7)
=HLOOKUP(\"B\在首行查找 B,并返回同列中第 3 行的值。由于 B 不是精确匹配,因此将使用小于 B 的最大值 Axles。(5)
=HLOOKUP(\"Bolts\在首行查找 Bolts,并返回同列中第 4 行的值。(11) =HLOOKUP(3,{1,2,3;\"a\在数组常量的第一行中查找 3,并返回同列中第 2 行的值。(c)
LOOKUP 函数可返回一行或一列区域中或者数组中的某个值。LOOKUP 函数具有两种语法形式:矢量和数组。矢量形式的 LOOKUP 在一行或一列区域(称为矢量)中查找值,然后返回另一行或一列区域中相同位置处的值。数组形式的 LOOKUP 在数组的第一行或列中查找指定值,然后返回该数组的最后一行或列中相同位置处的值。 回到顶端
矢量形式的 LOOKUP
矢量形式的 LOOKUP 在一行或一列区域(称为矢量)中查找值,然后返回另一行或一列区域中相同位置处的值。如果要指定其中包含要匹配的值的区域,请使用这种形式的 LOOKUP 函数。
矢量形式的语法
LOOKUP(lookup_value,lookup_vector,result_vector)
Lookup_value 是 LOOKUP 在第一个矢量中搜索到的值。Lookup_value 可以是数
字、文本、逻辑值,也可以是代表某个值的名称或引用。
Lookup_vector 是一个仅包含一行或一列的区域。lookup_vector 中的值可以是文本、
数字或逻辑值。
重要说明:lookup_vector 中的值必须按升序顺序排列。例如,-2、-1、0、1、2 或 A-Z 或 FALSE、TRUE。否则,LOOKUP 返回的值可能不正确。大写和小写文本是等效的。
Result_vector 是一个仅包含一行或一列的区域。它的大小必须与 lookup_vector 相
同。
注意
如果 LOOKUP 找不到 lookup_value,它会匹配 lookup_vector 中小于或等于
lookup_value 的最大值。
如果 lookup_value 小于 lookup_vector 中的最小值,则 LOOKUP 会返回 #N/A
错误值。
示例
A
B
1 频率 颜色 2 4.14 red 3 4.19 orange 4 5.17 yellow 5 5.77 green
6 6.39 blue
公式
说明(结果)
=LOOKUP(4.91,A2:A6,B2:B6) 在列 A 中查找 4.19,然后返回列 B 的同一行中的值 (orange)。 =LOOKUP(5.00,A2:A6,B2:B6) 在列 A 中查找 5.00,然后返回列 B 的同一行中的值 (orange)。 =LOOKUP(7.66,A2:A6,B2:B6) 在列 A 中查找 7.66,匹配次小值 (6.39),然后返回列 B 的同一行中的
值 (blue)。
=LOOKUP(0,A2:A6,B2:B6)
在列 A 中查找 0,然后返回一个错误,原因是 0 小于 lookup_vector A2:A7 中的最小值 (#N/A)。
回到顶端
数组形式的 LOOKUP
数组形式的 LOOKUP 在数组的第一行或列中查找指定值,然后返回该数组的最后一行或列中相同位置处的值。如果要匹配的值位于数组的第一行或列中,请使用这种形式的 LOOKUP。
数组形式的语法
LOOKUP(lookup_value,array)
Lookup_value 是 LOOKUP 在数组中搜索到的值。Lookup_value 可以是数字、文本、
逻辑值,也可以是代表某个值的名称或引用。
o 如果 LOOKUP 找不到 lookup_value,它会使用该数组中小于或等于
lookup_value 的最大值。
o 如果 lookup_value 小于第一行或列(取决于数组维度)中的最小值,则
LOOKUP 会返回 #N/A 错误值。
Array 是一个单元格区域,其中包含要与 lookup_value 进行比较的文本、数字或逻辑
值。
数组形式的 LOOKUP 与 HLOOKUP 函数和 VLOOKUP 函数相似。其区别是 HLOOKUP 在第一行中搜索 lookup_value,VLOOKUP 在第一列中进行搜索,而 LOOKUP 根据数组的维度进行搜索。
o 如果 array 所覆盖区域的宽度大于高度(列多于行),则 LOOKUP 会在第一
行中搜索 lookup_value。
o 如果 array 所覆盖的区域是正方形或者高度大于宽度(行多于列),则
LOOKUP 会在第一列中进行搜索。
o 使用 HLOOKUP 和 VLOOKUP 时,可以向下索引或交叉索引,但
LOOKUP 始终会选择行或列中的最后一个值。
重要说明:array 中的值必须按升序顺序排列。例如,-2、-1、0、1、2 或 A-Z 或 FALSE、TRUE。否则,LOOKUP 返回的值可能不正确。大写和小写文本是等效的。
示例
A B
1 a 1 2 b 2 3 c 3 4 d 4
公式
=LOOKUP(\"c\
说明(结果)
在数组的第一行中查找“C”,然后返回最后一行的同一列中的值 (3)。
=LOOKUP(\"bump\在数组的第一行中查找“bump”,然后返回同一行的最后一列中的值 (2)。
回到顶端