Applies ToMicrosoft 365 专属 Excel Microsoft 365 Mac 版专属 Excel Excel 网页版 Excel 2024 Excel 2024 for Mac Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2016

尝试使用新的 XLOOKUP 函数,这是 VLOOKUP 的改进版本,可在任何方向工作,默认情况下返回精确匹配项,使其比其前置版本更易于使用。

需要在表格或区域中按行查找内容时,请使用 VLOOKUP。 例如,按部件号查找汽车部件的价格,或根据员工 ID 查找员工姓名。

在这一最简单的形式中,VLOOKUP 函数表示:

=VLOOKUP(要查找的内容、要查找的位置、包含要返回的值的范围内的列号、返回表示为 1/TRUE 或 0/FALSE 的近似或精确匹配项)。

你的浏览器不支持视频。 请安装 Microsoft Silverlight、Adobe Flash Player 或 Internet Explorer 9。

  • VLOOKUP 的秘诀在于组织数据,这样您查找的值(水果)位于要查找的返回值(金额)的左侧。

  • 如果你是MicrosoftCopilot 订阅者 Copilot 可以更轻松地插入和使用 VLookup 或 XLookup 函数。 请参阅 Copilot 使 Excel 中的查找变得简单。​​​​​​​​​​​​​​

使用 VLOOKUP 函数在表中查找值。

语法 

VLOOKUP (lookup_value, table_array, col_index_num, [range_lookup])

例如:

  • =VLOOKUP(A2,A10:C20,2,TRUE)

  • =VLOOKUP("袁",B2:E7,2,FALSE)

  • =VLOOKUP(A2,“客户端详细信息”!A:F,3,FALSE)

参数名称

说明

lookup_value   (必需参数)

要查找的值。 要查找的值必须位于 table_array 参数中指定的单元格区域的第一列中。

例如,如果 table-array 指定的单元格为 B2:D7,则 lookup_value 必须位于列 B 中。

Lookup_value 可以是值,也可以是单元格引用。

Table_array   (必需参数)

VLOOKUP 在其中搜索 lookup_value 和返回值的单元格区域。 可以使用命名区域或表,并且可以在参数中使用名称,而不是单元格引用。 

单元格区域中的第一列必须包含 lookup_value。 单元格区域还需要包含要查找的返回值。

了解如何选择工作表中的区域

col_index_num   (必需参数)

其中包含返回值的单元格的编号(table_array 最左侧单元格为 1 开始编号)。

range_lookup   (可选参数)

一个逻辑值,该值指定希望 VLOOKUP 查找近似匹配还是精确匹配:

  • 近似匹配 - 1/TRUE 假定表中的第一列按数字或字母排序,然后搜索最接近的值。 这是未指定值时的默认方法。 例如,=VLOOKUP(90,A1:B100,2,TRUE)。

  • 完全匹配 - 0/FALSE 在第一列中搜索精确值。 例如,=VLOOKUP("Smith",A1:B100,2,FALSE)。

如何开始

您需要四条信息才能构建 VLOOKUP 语法:

  1. 要查找的值,也被称为查阅值。

  2. 查阅值所在的区域。 请记住,查阅值应该始终位于所在区域的第一列,这样 VLOOKUP 才能正常工作。 例如,如果查阅值位于单元格 C2 内,那么您的区域应该以 C 开头。

  3. 区域中包含返回值的列号。 例如,如果指定 B2:D11 作为区域,那么应该将 B 算作第一列,C 作为第二列,以此类推。

  4. (可选)如果需要返回值的近似匹配,可以指定 TRUE;如果需要返回值的精确匹配,则指定 FALSE。 如果没有指定任何内容,默认值将始终为 TRUE 或近似匹配。

现在将上述所有内容集中在一起,如下所示:

=VLOOKUP(查找值,包含查找值的范围,包含返回值的范围中的列号,近似匹配 (TRUE) 或精确匹配 (FALSE))。

示例

下面是有关 VLOOKUP 的几个示例:

示例 1

=VLOOKUP (B3,B2:E7,2,FALSE)

VLOOKUP 在 table_array B2:E7 的第一列(列 B)中查找 Fontana,并从 table_array 的第二列(列 C)返回 Olivier。  False 返回完全匹配项。

示例 2

=VLOOKUP (102,A2:C7,2,FALSE)

VLOOKUP 在 A2:C7 范围内的第二列(B 列)中查找姓氏 102 (lookup_value) 的完全匹配 (FALSE),并返回 Fontana。

示例 3

=IF(VLOOKUP(103,A1:E7,2,FALSE)="Souse","Located","Not found")

IF 检查 VLOOKUP 是否将 Sousa 作为员工姓氏返回到 A1:E7 (table_array) 中的 103 (lookup_value)。 由于与 103 对应的姓氏为 Leal,因此 IF 条件为 false,并且显示“未找到”。

示例 4

=INT(YEARFRAC(DATE(2014,6,30),VLOOKUP(105,A2:E7,5,FLASE),1))



VLOOKUP 在 A2:E7 范围 (table_array) 中查找与 109 (lookup_value) 对应的员工的出生日期,并返回 03/04/1955。 然后,YEARFRAC 将从 2014/6/30 减去此出生日期,并返回一个值,然后由 INY 转换为整数 59。

示例 5

IF(ISNA(VLOOKUP(105,A2:E7,2,FLASE))=TRUE,“找不到员工”,VLOOKUP(105,A2:E7,2,FALSE))



如果检查 VLOOKUP 是否从列 B 返回 105 (lookup_value) 的姓氏值。 如果 VLOOKUP 找到姓氏,则 IF 将显示姓氏,否则 IF 返回“找不到员工”。 ISNA 确保如果 VLOOKUP 返回 #N/A,则错误将替换为“找不到员工”,而不是 #N/A。



在此示例中,返回值为 Burke,它是对应于 105 的姓氏。

问题

出错原因

返回了错误值

如果 range_lookup 为 TRUE 或被排除在外,需要对第一列按字母或数字顺序排序。 如果未对第一列排序,可能会返回意外值。 请对第一列排序,或使用 FALSE 以获得精确匹配项。

单元格中显示 #N/A

  • 如果 range_lookup 为 TRUE,并且 lookup_value 中的值比 table_array 的第一列中的最小值小,将显示错误值 #N/A。

  • 如果 range_lookup 为 FALSE,则错误值 #N/A 表示未找到精确匹配项。

有关在 VLOOKUP 中解决 #N/A 错误的详细信息,请参阅如何在 VLOOKUP 函数中更正 #N/A 错误

#REF! (显示在单元格中)

如果 col_index_num 大于 table-array 中的列数,则显示错误值 #REF! 。

有关在 VLOOKUP 中解决 #REF! 错误的详细信息,请参阅如何更正 #REF! 错误.

#VALUE! (显示在单元格中)

如果 table_array 小于 1,则显示错误值 #VALUE! 。

有关在 VLOOKUP 中解决 #VALUE! 错误的详细信息,请参阅 如何在 VLOOKUP 函数中更正 #VALUE! 错误.

#NAME? (显示在单元格中)

错误值 #NAME? 通常意味着该公式缺少引号。 要查找人员的姓名,请确保在公式中的姓名左右加上引号。 例如,在 =VLOOKUP("袁",B2:E7,2,FALSE) 中输入姓氏“"袁"”。

有关详细信息,请参阅如何更正 #NAME! 错误.

Excel 中的 #SPILL! (显示在单元格中)

此特定 #SPILL! 错误 通常意味着公式依赖于查找值的隐式交集,并使用整个列作为引用。 例如,=VLOOKUP(A:A,A:C,2,FALSE)。 可以通过使用 @ 运算符定位查找引用来解决此问题,如下所示:=VLOOKUP(@A:A,A:C,2,FALSE)。 或者,可以使用传统的 VLOOKUP 方法并引用单个单元格,而不是整个列:=VLOOKUP(A2,A:C,2,FALSE)。

要执行的操作

原因

range_lookup 使用绝对引用

通过使用绝对引用,可以向下填充公式,这样该公式始终在完全精确的查找区域内查找。

了解如何使用绝对单元格引用

请勿将数字或日期值存储为文本。

在搜索数字或日期值时,请确保 table_array 第一列中的数据未存储为文本值。 否则,VLOOKUP 可能返回不正确或意外的值。

对第一列排序

range_lookup 为 TRUE 时使用 VLOOKUP 之前对 table_array 的第一列排序。

使用通配符

如果 range_lookup 为 FALSE 且 lookup_value 为文本,您可在 lookup_value 中使用通配符 - 问号 (?) 和星号 (*)。 问号匹配任何单个字符。 星号匹配任何字符序列。 如果要查找实际的问号或星号,则在字符前键入代字号 (~)。

例如,=VLOOKUP("Fontan?",B2:E7,2,FALSE) 将使用最后一个字母搜索 Fontana 的所有实例,该实例可能有所不同。

请确保您的数据中不包含错误的字符。

在第一列中搜索文本值时,请确保第一列中的数据没有前导空格、尾部空格、直引号(' 或 ")与弯引号(‘或“)不一致或非打印字符。 否则,VLOOKUP 可能返回意外的值。

要获得准确的结果,请尝试使用 CLEAN 函数TRIM 函数删除单元格中表格值后后面的后置空格。

需要更多帮助吗?

可随时在 Excel 技术社区中咨询专家或在社区中获取支持。

另请参阅

XLOOKUP 函数

视频:何时以及如何使用 VLOOKUP

课程摘要卡:VLOOKUP 复习

如何更正 VLOOKUP 函数中的 #N/A 错误

使用 VLOOKUP、INDEX 或 MATCH 查找值

HLOOKUP 函数

需要更多帮助?

需要更多选项?

了解订阅权益、浏览培训课程、了解如何保护设备等。

社区可帮助你提出和回答问题、提供反馈,并听取经验丰富专家的意见。