Excel中的Vlookup函数用法

关于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 的最大数值。如果 range_value 为 FALSE,函数 HLOOKUP 将查找精确匹配值,如果找不到,则返回错误值 #N/A!。

说明

  • 如果函数 HLOOKUP 找不到 lookup_value,且 range_lookup 为 TRUE,则使用小于 lookup_value 的最大值。
  • 如果函数 HLOOKUP 小于 table_array 第一行中的最小数值,函数 HLOOKUP 返回错误值 #N/A!。

示例

如果您将示例复制到空白工作表中,可能会更易于理解该示例。

显示 操作方法

  1. 创建空白工作簿或工作表。
  2. 请在“帮助”主题中选取示例。不要选取行或列标题。

    从帮助中选取示例。

    从帮助中选取示例。

  3. 按 Ctrl+C。
  4. 在工作表中,选中单元格 A1,再按 Ctrl+V。
  5. 若要在查看结果和查看返回结果的公式之间切换,请按 Ctrl+`(重音符),或在“工具”菜单上,指向“公式审核”,再单击“公式审核模式”。
 
1
2
3
4
A B C
Axles Bearings Bolts
4 4 9
5 7 10
6 8 11
公式 说明(结果)
=HLOOKUP("Axles",A1:C4,2,TRUE) 在首行查找 Axles,并返回同列中第 2 行的值。(4)
=HLOOKUP("Bearings",A1:C4,3,FALSE) 在首行查找 Bearings,并返回同列中第 3 行的值。(7)
=HLOOKUP("B",A1:C4,3,TRUE) 在首行查找 B,并返回同列中第 3 行的值。由于 B 不是精确匹配,因此将使用小于 B 的最大值 Axles。(5)
=HLOOKUP("Bolts",A1:C4,4) 在首行查找 Bolts,并返回同列中第 4 行的值。(11)
=HLOOKUP(3,{1,2,3;"a","b","c";"d","e","f"},2,TRUE) 在数组常量的第一行中查找 3,并返回同列中第 2 行的值。(c)
原文地址:https://www.cnblogs.com/Tonyyang/p/1578288.html