本文介绍 Microsoft Excel 中 VLOOKUP 函数 (函数:函数是预先编写的公式,可以对一个或多个值执行运算,并返回一个或多个值。函数可以简化和缩短工作表中的公式,尤其在用公式执行很长或复杂的计算时。)的公式语法和用法。
说明
您可以使用 VLOOKUP 函数搜索某个单元格区域 (区域:工作表上的两个或多个单元格。区域中的单元格可以相邻或不相邻。)的第一列,然后返回该区域相同行上任何单元格中的值。例如,假设区域 A2:C10 中包含雇员列表,雇员的 ID 号存储在该区域的第一列,如下图所示。

如果知道雇员的 ID 号,则可以使用 VLOOKUP 函数返回该雇员所在的部门或其姓名。若要获取 38 号雇员的姓名,可以使用公式 =VLOOKUP(38, A2:C10, 3, FALSE)。此公式将搜索区域 A2:C10 的第一列中的值 38,然后返回该区域同一行中第三列包含的值作为查询值(“Axel Delgado”)。
VLOOKUP 中的 V 表示垂直方向。当比较值位于所需查找的数据的左边一列时,可以使用 VLOOKUP 而不是 HLOOKUP。
语法
VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
VLOOKUP 函数语法具有下列参数 (参数:为操作、事件、方法、属性、函数或过程提供信息的值。):
- lookup_value 必需。要在表格或区域的第一列中搜索的值。lookup_value 参数可以是值或引用。如果为 lookup_value 参数提供的值小于 table_array 参数第一列中的最小值,则 VLOOKUP 将返回错误值 #N/A。
- table_array 必需。包含数据的单元格区域。可以使用对区域(例如,A2:D8)或区域名称的引用。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。文本不区分大小写。
- col_index_num 必需。table_array 参数中必须返回的匹配值的列号。col_index_num 参数为 1 时,返回 table_array 第一列中的值;col_index_num 为 2 时,返回 table_array 第二列中的值,依此类推。
如果 col_index_num 参数:
- 小于 1,则 VLOOKUP 返回错误值 #VALUE!。
- 大于 table_array 的列数,则 VLOOKUP 返回错误值 #REF!。
- range_lookup 可选。一个逻辑值,指定希望 VLOOKUP 查找精确匹配值还是近似匹配值:
注解
示例
示例 1
本示例搜索大气特征表的“密度”列以查找“粘度”和“温度”列中对应的值。(该值是在海平面 0 摄氏度或 1 个大气压下对空气的测定。)
如果将示例复制到一个空白工作表中,可能会更容易理解该示例。
- 选择本文中的示例。
要点 不要选择行或列标题。

从“帮助”中选择示例
- 按 Ctrl+C。
- 在 Excel 中,创建一个空白工作簿或工作表。
- 在工作表中,选择单元格 A1,然后按 Ctrl+V。
要点 若要使该示例能够正常工作,必须将其粘贴到工作表的单元格 A1 中。
- 要在查看结果和查看返回结果的公式之间进行切换,请按 Ctrl+`(重音符),或在“公式”选项卡上的“公式审核”组中,单击“显示公式”按钮。
将示例复制到一个空白工作表中后,可以按照您的需要改编示例。
|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
---|
12 |
---|
13 |
---|
14 |
---|
15 |
---|
16 |
|
A | B | C |
---|
密度 | 粘度 | 温度 | 0.457 | 3.55 | 500 | 0.525 | 3.25 | 400 | 0.606 | 2.93 | 300 | 0.675 | 2.75 | 250 | 0.746 | 2.57 | 200 | 0.835 | 2.38 | 150 | 0.946 | 2.17 | 100 | 1.09 | 1.95 | 50 | 1.29 | 1.71 | 0 | 公式 | 说明 | 结果 | =VLOOKUP(1,A2:C10,2) | 使用近似匹配搜索 A 列中的值 1,在 A 列中找到小于等于 1 的最大值 0.946,然后返回同一行中 B 列的值。 | 2.17 | =VLOOKUP(1,A2:C10,3,TRUE) | 使用近似匹配搜索 A 列中的值 1,在 A 列中找到小于等于 1 的最大值 0.946,然后返回同一行中 C 列的值。 | 100 | =VLOOKUP(0.7,A2:C10,3,FALSE) | 使用精确匹配在 A 列中搜索值 0.7。因为 A 列中没有精确匹配的值,所以返回一个错误。 | #N/A | =VLOOKUP(0.1,A2:C10,2,TRUE) | 使用近似匹配在 A 列中搜索值 0.1。因为 0.1 小于 A 列中最小的值,所以返回一个错误。 | #N/A | =VLOOKUP(2,A2:C10,2,TRUE) | 使用近似匹配搜索 A 列中的值 2,在 A 列中找到小于等于 2 的最大值 1.29,然后返回同一行中 B 列的值。 | 1.71 |
|
示例 2
本示例搜索婴幼儿用品表中“货品 ID”列并在“成本”和“涨幅”列中查找与之匹配的值,以计算价格并测试条件。
如果将示例复制到一个空白工作表中,可能会更容易理解该示例。
- 选择本文中的示例。
要点 不要选择行或列标题。

从“帮助”中选择示例
- 按 Ctrl+C。
- 在 Excel 中,创建一个空白工作簿或工作表。
- 在工作表中,选择单元格 A1,然后按 Ctrl+V。
要点 若要使该示例能够正常工作,必须将其粘贴到工作表的单元格 A1 中。
- 要在查看结果和查看返回结果的公式之间进行切换,请按 Ctrl+`(重音符),或在“公式”选项卡上的“公式审核”组中,单击“显示公式”按钮。
将示例复制到一个空白工作表中后,可以按照您的需要改编示例。
|
A | B | C | D |
---|
货品 ID | 货品 | 成本 | 涨幅 | ST-340 | 童车 | ¥145.67
| 30%
| BI-567 | 围嘴 | ¥3.56
| 40%
| DI-328 | 尿布
| ¥21.45
| 35%
| WI-989 | 柔湿纸巾
| ¥5.12
| 40%
| AS-469 | 吸出器 | ¥2.56
| 45%
| 公式 | 说明 | | 结果 | = VLOOKUP("DI-328", A2:D6, 3, FALSE) * (1 + VLOOKUP("DI-328", A2:D6, 4, FALSE))
| 涨幅加上成本,计算尿布的零售价。 | $28.96 | = (VLOOKUP("WI-989", A2:D6, 3, FALSE) * (1 + VLOOKUP("WI-989", A2:D6, 4, FALSE))) * (1 - 20%) | 零售价减去指定折扣,计算柔湿纸巾的销售价格。 | $5.73 | = IF(VLOOKUP(A2, A2:D6, 3, FALSE) >= 20, "涨幅为 " & 100 * VLOOKUP(A2, A2:D6, 4, FALSE) &"%", "成本低于 ¥20.00") | 如果某一货品的成本大于等于 ¥20.00,则显示字符串“涨幅为 nn%”;否则,显示字符串“成本低于 ¥20.00”。 | 涨幅为 30% | = IF(VLOOKUP(A3, A2:D6, 3, FALSE) >= 20, "涨幅为: " & 100 * VLOOKUP(A3, A2:D6, 4, FALSE) &"%", "成本为 ¥" & VLOOKUP(A3, A2:D6, 3, FALSE))
| 如果某一货品的成本大于等于 ¥20.00,则显示字符串“涨幅为 nn%”;否则,显示字符串“成本为 ¥n.nn”。 | 成本为 ¥3.56 |
|
示例 3
本示例搜索员工表的 ID 列并查找其他列中的匹配值,以计算年龄并测试错误条件。
如果将示例复制到一个空白工作表中,可能会更容易理解该示例。
- 选择本文中的示例。
要点 不要选择行或列标题。

从“帮助”中选择示例
- 按 Ctrl+C。
- 在 Excel 中,创建一个空白工作簿或工作表。
- 在工作表中,选择单元格 A1,然后按 Ctrl+V。
要点 若要使该示例能够正常工作,必须将其粘贴到工作表的单元格 A1 中。
- 要在查看结果和查看返回结果的公式之间进行切换,请按 Ctrl+`(重音符),或在“公式”选项卡上的“公式审核”组中,单击“显示公式”按钮。
将示例复制到一个空白工作表中后,可以按照您的需要改编示例。
|
A | B | C | D | E |
---|
ID
| 姓氏 | 名字 | 职务 | 出生日期
| 1 | 黄 | 雅玲 | 销售代表
| 12/8/1968 | 2 | 王 | 俊元 | 销售副总裁 | 2/19/1952 | 3 | 谢 | 丽秋 | 销售代表 |
8/30/1963 | 4 | 王 | 炫皓 | 销售代表 | 9/19/1958 | 5 | 孙 | 林 | 销售经理 | 3/4/1955 | 6 | 王 | 伟 | 销售代表
| 7/2/1963 | 公式 | 说明 | 结果 | =INT(YEARFRAC(DATE(2004,6,30), VLOOKUP(5,A2:E7,5, FALSE), 1)) | 针对 2004 会计年度,查找 ID 为 5 的雇员的年龄。使用 YEARFRAC 函数,将此会计年度的结束日期减去雇员的出生日期,然后使用 INT 函数将结果以整数形式显示。 | 49 | =IF(ISNA(VLOOKUP(5,A2:E7,2,FALSE)) = TRUE, "未发现员工", VLOOKUP(5,A2:E7,2,FALSE)) | 如果有 ID 为 5 的员工,则显示该员工的姓氏;否则,显示消息“未发现员工”。 当 VLOOKUP 函数返回错误值 #NA 时,ISNA 函数返回值 TRUE。 | 孙 | =IF(ISNA(VLOOKUP(15,A3:E8,2,FALSE)) = TRUE, "未发现员工", VLOOKUP(15,A3:E8,2,FALSE)) | 如果有 ID 为 15 的员工,则显示该员工的姓氏;否则,显示消息“未发现员工”。 当 VLOOKUP 函数返回错误值 #NA 时,ISNA 函数返回值 TRUE。 | 未发现员工 | =VLOOKUP(4,A2:E7,3,FALSE) & " " & VLOOKUP(4,A2:E7,2,FALSE) & " 是 " & VLOOKUP(4,A2:E7,4,FALSE) | 对于 ID 为 4 的雇员,将三个单元格的值连接成一个完整的句子。 | 王炫皓是销售代表。 |
|
function search leftmost column array particular value return cell match value and return data v look up Vertical Lookup VLOOKUP Function xl