当需要在表格或区域中按行查找项目时,请使用 VLOOKUP。例如,按部件号查找汽车部件的价格,或根据员工 ID 查找员工姓名。
在这一最简单的形式中,VLOOKUP 函数表示:
= VLOOKUP (你想要查找的内容,要查找的位置,包含要返回的值的区域中的列号,返回近似或精确匹配-表示为 1/TRUE 或 0/假)。
提示: VLOOKUP 的秘诀在于组织数据,这样您查找的值(水果)位于要查找的返回值(金额)的左侧。
技术细节
使用 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 查找近似匹配还是精确匹配:
|
如何开始
您需要四条信息才能构建 VLOOKUP 语法:
要查找的值,也被称为查阅值。
查阅值所在的区域。请记住,查阅值应该始终位于所在区域的第一列,这样 VLOOKUP 才能正常工作。例如,如果查阅值位于单元格 C2 内,那么您的区域应该以 C 开头。
区域中包含返回值的列号。例如,如果指定 B2:D11 作为区域,则应将 B 作为第一列,将 C 作为第二列进行计数,依此类推。
(可选)如果需要返回值的近似匹配,可以指定 TRUE;如果需要返回值的精确匹配,则指定 FALSE。如果没有指定任何内容,默认值将始终为 TRUE 或近似匹配。
现在将上述所有内容集中在一起,如下所示:
= VLOOKUP (查阅值、包含查阅值的区域、包含返回值的区域中的列号、近似匹配(TRUE)或完全匹配(FALSE))。
示例
下面是有关 VLOOKUP 的几个示例:
示例 1
示例 2
示例 3
示例 4
示例 5
使用 VLOOKUP 将多个表中的数据合并到一个工作表中
可以使用 VLOOKUP 将多个表合并到一个表中,只要其中一个表具有与所有其他表相同的字段。如果需要与具有较早版本的 Excel 的用户共享工作簿,并且该用户不支持将数据与多个表作为数据源的用户共享,请将源合并到一个表中并将数据功能的数据源更改为新表,数据功能可用于较旧的 Excel 版本(前提是数据功能本身受较旧版本支持)。
此处,列 A-F 和 H 具有仅使用工作表中的值的值或公式,其余列使用 VLOOKUP 和列 A (客户端代码)和列 B (律师)的值从其他表中获取数据。 |
将具有公共字段的表复制到新工作表上,并为其命名。
单击 "数据>数据工具>关系" 以打开 "管理关系" 对话框。
对于列出的每个关系,请注意以下事项:
链接表的字段(列在对话框中的括号中)。这是 VLOOKUP 公式的lookup_value 。
相关的查阅表格名称。这是 VLOOKUP 公式中的table_array 。
在新列中具有所需数据的相关查阅表格中的字段(列)。"管理关系" 对话框中不显示此信息-您必须查看相关的查阅表才能查看要检索的字段。你想要记下列号(A = 1),这是公式中的col_index_num 。
若要将字段添加到新表,请使用步骤3中收集的信息在第一个空列中输入 VLOOKUP 公式。
在我们的示例中,列 G 使用律师( lookup_value)从律师费工作表表(col_index_num = 4)获取账单费率数据,tblAttorneys ( Table_array),公式= VLOOKUP ([@Attorney],tbl_Attorneys,4,FALSE)。
公式还可以使用单元格引用和区域引用。在我们的示例中,它将是= VLOOKUP (A2,"律师费"!A:D、4、FALSE)。
继续添加字段,直到获得所需的所有字段。如果您尝试准备包含使用多个表的数据功能的工作簿,请将数据源的数据源更改为新表。
常见问题
问题 | 出错原因 |
---|---|
返回了错误值 | 如果 range_lookup 为 TRUE 或被排除在外,需要对第一列按字母或数字顺序排序。如果未对第一列排序,可能会返回意外值。请对第一列排序,或使用 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 函数删除单元格中表格值后后面的后置空格。 |