VLOOKUP 函数

应用对象
Microsoft 365 专属 Excel Microsoft 365 Mac 版专属 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 的近似或精确匹配项)。

提示

  • VLOOKUP 的秘诀在于组织数据,这样您查找的值(水果)位于要查找的返回值(金额)的左侧。
  • 如果你是Microsoft Copilot订阅者 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 参数中指定的单元格区域的第一列中。
例如,如果 表数组 跨越单元格 B2:D7,则lookup_value必须位于 B 列中。
Lookup_value 可以是值或对单元格的引用。
Table_array(必需参数) VLOOKUP 将在其中搜索 lookup_value 和返回值的单元格区域。 可以使用命名区域或表,并且可以在参数中使用名称,而不是单元格引用。
单元格区域中的第一列必须包含 lookup_value。 单元格区域还需要包含要查找的返回值。
了解如何选择工作表中的区域
col_index_num(必需参数) 列号 (从 1 开始,对于包含返回值的 最左侧table_array) 列。
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 B) 的第一 (列中查找 Fontana,并从第二列 (列 C) table_array返回 Olivier。False 返回完全匹配。

示例 2

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

示例 3

=IF (VLOOKUP (103,A1:E7,2,FALSE) =Souse,已找到,找不到) 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

如果 (ISNA (VLOOKUP (105,A2:E7,2,FLASE) ) =TRUE,找不到员工,VLOOKUP (105,A2:E7,2,FALSE) ) IF 检查以查看 VLOOKUP 是否从列 B 返回 105 (lookup_value) 的姓氏值。如果 VLOOKUP 找到姓氏,则 IF 将显示姓氏,否则 IF 返回找不到 Employee。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 大于 表数组中的列数,则会获得 #REF! 。
有关在 VLOOKUP 中解决 #REF! VLOOKUP 中的错误,请参阅 如何更正 #REF! 错误
#VALUE! (显示在单元格中) 如果 table_array 小于 1,你将获得 #VALUE! 。
有关在 VLOOKUP 中解决 #VALUE! VLOOKUP 中的错误,请参阅 如何更正 VLOOKUP 函数中的 #VALUE!错误
单元格中的 #NAME? #NAME?error 值通常意味着公式缺少引号。 要查找人员的姓名,请确保在公式中的姓名左右加上引号。 例如,在 =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 时,先对 table_array 的第一列进行排序,然后再使用 VLOOKUP。
使用通配符 如果 range_lookup 为 FALSE 且 lookup_value 为文本, 则可以在 lookup_value 中使用通配符(问号 ( ) 和星号 (*) )。 问号匹配任何单个字符。 星号匹配任何字符序列。 如果要查找实际的问号或星号,则在字符前键入代字号 (~)。
例如,=VLOOKUP("Fontan?",B2:E7,2,FALSE) 将使用最后一个字母搜索 Fontana 的所有实例,该实例可能有所不同。
请确保您的数据中不包含错误的字符。 在搜索第一列中的文本值时,请确保第一列中的数据没有前导空格、尾随空格、不一致地使用直 ( ' 或 “) 和大括号 ( ' 或 ”) 引号或非打印字符。 否则,VLOOKUP 可能返回意外的值。
要获得准确的结果,请尝试使用 CLEAN 函数TRIM 函数删除单元格中表格值后后面的后置空格。

需要更多帮助吗?

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