KutoolsforOffice — 一套方案,五大工具。事半功倍。

20+ 面向 Excel 初学者与高级用户的 VLOOKUP 示例

作者Xiaoyang修改日期

VLOOKUP 函数是 Excel 中最受欢迎的函数之一。本教程将手把手教您如何在 Excel 中使用 VLOOKUP 函数,并提供数十个基础与高级实用示例。


VLOOKUP 函数简介 – 语法与参数

在 Excel 中,VLOOKUP 函数对大多数用户来说都是一款强大而实用的工具,它能在数据区域的最左侧列中查找指定值,并返回同一行中您所指定列的匹配结果,如下图所示。
VLOOKUP 函数的语法和参数

VLOOKUP 函数的语法:

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

参数:

“Lookup_value”(必需):您要查找的值,可以是数字、日期、文本或单元格引用,且必须位于 table_array 范围的第一列中。

“Table_array”(必需):包含用于查找的列和返回结果的列的数据区域或表格。

“Col_index_num”(必需):指定返回值所在列的编号,从表格数组最左侧列开始计数,起始编号为 1.

“Range_lookup”(可选):一个逻辑值,用于指定 VLOOKUP 函数返回精确匹配还是近似匹配。

  • “近似匹配” – 1 / TRUE / 省略(默认):若未找到精确匹配项,公式将返回小于查找值的最大近似匹配项。
  • “精确匹配” – 0 / FALSE:用于精准查找与查找值完全相等的值;若未找到精确匹配项,则返回错误值 #N/A。

函数说明

  • VLOOKUP 函数仅支持从左向右查找值。
  • VLOOKUP 函数执行不区分大小写的查找。
  • 当基于查找值存在多个匹配项时,VLOOKUP 函数仅返回首个匹配结果。

基础 VLOOKUP 示例

本节将为您介绍一些常用的 VLOOKUP 公式。

2.1 精确匹配与近似匹配 VLOOKUP

2.1.1 执行精确匹配 VLOOKUP

通常,若要使用 VLOOKUP 函数进行精确匹配查找,只需将最后一个参数设为 FALSE 即可。

例如,要根据特定 ID 号获取对应的数学成绩,请按如下操作:
示例数据

请将以下公式复制并粘贴到空白单元格中(此处我选择 G2),然后按“ENTER 键”获取结果:

=VLOOKUP(F2,$A$2:$D$7,3,FALSE)

应用 VLOOKUP 公式

注意:在上述公式中,包含四个参数:

  • “F2”是包含您要查找的值 C1005 的单元格;
  • “A2:D7”是您执行查找的表格数组;
  • “3”表示返回匹配值所在的列号;也就是说,函数一旦找到 ID C1005,就会定位到表格数组的第三列,并返回与该 ID 所在行对应的值。
  • “FALSE”表示精确匹配。

VLOOKUP 公式是如何运作的?

首先,它会在表格最左侧的列中查找 ID — C1005,并逐行向下搜索,最终在单元格 A6 中找到该值。
从上到下查找并在特定单元格中找到该值

一旦找到该值,系统便会向右移动至第三列,并提取其中的内容。
向右移动到第三列并提取其中的值

因此,您将获得如下图所示的结果:
获取结果

注意:如果查找值未在最左列中找到,将返回 #N/A 错误。
🤖KUTOOLS AI 助手:基于以下内容革新数据分析:智能执行   |  生成代码|  创建自定义公式  |  数据分析及生成图表|  调用 Kutools Functions……
热门功能查找、高亮或标记重复项   |  删除空白行   |  合并列或单元格且不丢失数据   |  不使用公式的四舍五入……
高级 LOOKUP多条件 VLookup  |   多值 VLookup  |   跨多工作表 VLookup   |   模糊查找……
高级下拉列表快速创建下拉列表   |  级联下拉列表   |  多选下拉列表……
列管理器添加指定数量的列  |  移动列   |  取消隐藏列  |  比较区域与列……
特色功能网格聚焦   |  设计视图   |增强编辑栏   |  工作簿和表管理器  |  资源库   |  日期提取  |  汇总工作表  |  加密/解密单元格   | 根据列表发送邮件   |  超级筛选   |   特殊筛选(通过加粗/斜体……) ......
热门 15 工具集12 文本工具添加文本删除特定字符,……)|   50+ 图表 类型甘特图,……)|   40+ 实用公式基于生日计算年龄,……)|   19 插入工具插入二维码从路径插入图片,……)|   12 转换工具小写金额转大写汇率转换,……)|   7 合并和拆分工具高级合并行分割单元格,……)|   更多功能……

Kutools for Excel 拥有超过 300 项功能确保您所需的功能触手可及……

 
2.1.2 执行近似匹配的 VLOOKUP

近似匹配适用于查找值介于某区域范围内的场景。当未找到精确匹配时,VLOOKUP 的近似匹配会返回小于查找值的最大值。

例如,如果您有以下数据范围,而指定的订单号未出现在“订单”列中,该如何获取其在 B 列中最接近的折扣?
执行近似匹配的 VLOOKUP

步骤 1:应用 VLOOKUP 公式并填充到其他单元格

将以下公式复制并粘贴到要显示结果的单元格中,然后向下拖动填充柄,即可将该公式快速应用到其他单元格。

=VLOOKUP(D2,$A$2:$B$9,2,TRUE)

结果:

现在,您将根据给定值获得近似匹配结果,请参见下图:
应用 VLOOKUP 公式并填充到其他单元格

注意:

  • 在上述公式中:
    • “D2” 是您希望返回其相关信息的值;
    • “A2:B9” 是数据区域;
    • “2” 表示返回匹配值所在的列号;
    • “TRUE” 表示启用近似匹配。
  • 若未找到精确匹配项,近似匹配将返回小于您指定查找值的最大数值。
  • 若要使用 VLOOKUP 函数获取近似匹配值,必须先将数据区域的最左列按升序排序,否则可能返回错误结果。

2.2 在 Excel 中执行区分大小写的 VLOOKUP

默认情况下,VLOOKUP 函数执行不区分大小写的查找,即将小写和大写字母视为相同。但在某些场景下,您可能需要在 Excel 中进行区分大小写的精确匹配,而标准的 VLOOKUP 函数无法满足这一需求。此时,您可以借助 INDEX 与 MATCH 函数组合 EXACT 函数,或采用 LOOKUP 与 EXACT 函数的组合来实现所需效果。

例如,我有以下数据区域,其中 ID 列包含全大写或小写的文本字符串,现在我希望返回指定 ID 对应的数学成绩。
执行区分大小写的 VLOOKUP

步骤 1:应用任一公式并填充到其他单元格

请将以下任一公式复制并粘贴到目标空白单元格中,然后选中该单元格,向下拖动填充柄,即可将公式快速填充至所需区域。

公式 1:粘贴公式后,请按下“Ctrl”+“Shift”+“Enter”组合键。

=INDEX($C$2:$C$10,MATCH(TRUE,EXACT(F2,$A$2:$A$10),0))

公式 2:粘贴公式后,请按下“Enter”键。

=LOOKUP(2,1/EXACT(F2,$A$2:$A$10),$C$2:$C$10)

结果:

这样,您就能获得所需的确切结果。请参见下图:
应用任意一个公式并填充到其他单元格

注意:

  • 在上述公式中:
    • “A2:A10” 是包含您要查找的特定值的列;
    • “F2” 是查找值;
    • “C2:C10” 是用于返回结果的列。
  • 若存在多个匹配项,此公式始终返回最后一个。

2.3 在 Excel 中从右向左进行 VLOOKUP 查找

VLOOKUP 函数始终在数据区域的最左列中查找值,并返回其右侧某一列中的对应结果。如果您希望执行反向 VLOOKUP——即在右侧列中查找特定值,并返回该行最左列中的对应值(如下图所示):

单击此处逐步了解此任务的详细操作……

从右向左进行 VLOOKUP 查找


2.4 在 Excel 中查找第二个、第 n 个或最后一个匹配值

通常,使用 VLOOKUP 函数时,若存在多个匹配值,仅会返回第一个匹配项。本节将为您介绍如何在数据区域中获取第二个、第 n 个或最后一个匹配值。

2.4.1 VLOOKUP 并返回第 2 个或第 n 个匹配值

假设 A 列为客户姓名,B 列为其购买的培训课程。现在,您希望查找指定客户所购买的第 2 个或第 n 个培训课程。请参见下图:
VLOOKUP 并返回第二个或第 n 个匹配值

此处,VLOOKUP 函数可能无法直接胜任此任务,但您可以使用 INDEX 函数作为更灵活的替代方案。

步骤 1:应用公式并填充到其他单元格

例如,若要根据指定条件获取第二个匹配值,请将以下公式输入空白单元格,然后同时按下“Ctrl”+“Shift”+“Enter”键以返回首个结果。接着,选中该公式所在单元格,向下拖动填充柄,将公式复制到所需范围。

=INDEX($B$2:$B$14,SMALL(IF(E2=$A$2:$A$14,ROW($A$2:$A$14)-ROW($A$2)+1),2))

结果:

现在,所有基于指定姓名的第二个匹配项已一次性全部呈现。
应用并填充公式到其他单元格

注意:在上述公式中:

  • “A2:A14”是包含所有查找值的区域;
  • “B2:B14”是您希望从中返回匹配值的区域;
  • “E2”是查找值;
  • “2”表示您要获取的第二个匹配值;若要返回第三个匹配值,只需将其改为 3 即可。
2.4.2 VLOOKUP 并返回最后一个匹配值

如果您希望执行 VLOOKUP 并返回最后一个匹配值(如下图所示),本 VLOOKUP 并返回最后一个匹配值教程将为您详细介绍如何轻松获取最后一个匹配值。

VLOOKUP 并返回最后一个匹配值


2.5 VLOOKUP 查找介于两个给定值或日期之间的匹配值

有时,您可能需要查找介于两个值或日期之间的目标区域,并返回对应的结果(如下图所示)。此时,您可以使用 LOOKUP 函数替代 VLOOKUP 函数,并搭配已排序的表格。
在两个值之间进行 VLOOKUP 匹配

2.5.1 使用公式通过 VLOOKUP 查找介于两个给定值或日期之间的匹配值

步骤 1:整理数据并应用以下公式

您的原始表格应为已排序的数据区域。接着,将以下公式复制或输入到空白单元格中,然后拖动填充柄,将其填充至其他所需单元格。

=LOOKUP(2,1/($A$2:$A$6<=E2)/($B$2:$B$6>=E2),$C$2:$C$6)

结果:

现在,您将根据给定值获取所有匹配记录,请参见下图:
整理数据并应用公式

注意:

  • 在上述公式中:
    • “A2:A6” 是较小值的范围;
    • “B2:B6” 是较大数值的范围;
    • “E2” 是您希望获取其对应值的查找值;
    • “C2:C6” 是您希望用于返回对应值的列。
  • 此公式也可用于提取如下图所示两个日期之间的匹配值:
    此公式还可提取两个日期之间的匹配值
2.5.2 使用便捷功能通过 VLOOKUP 查找介于两个给定值或日期之间的匹配值

如果您觉得上述公式难以记忆和理解,不妨试试这款简单高效的工具——“Kutools for Excel”。借助其“查找介于两值之间的数据”功能,您可轻松根据介于两个数值或日期之间的特定值,快速返回对应项。

  1. 单击“Kutools” > “高级 LOOKUP” > “查找介于两值之间的数据”,即可启用此功能。
  2. 然后根据您的数据,在对话框中指定所需操作。
注意:要使用此功能,请下载 Kutools for Excel 并享受 30 天免费试用

使用 Kutools 在两个给定值或日期之间进行 VLOOKUP 匹配

Kutools for Excel 提供超过 300 项高级功能,简化复杂任务,提升创造力与效率。结合 AI 功能,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

2.6 在 VLOOKUP 函数中使用通配符进行部分匹配

在 Excel 中,VLOOKUP 函数支持使用通配符,助您轻松实现查找值的部分匹配。例如,只需输入查找值的一部分,VLOOKUP 即可从表格中精准返回对应的匹配结果。

假设我有如下图所示的数据区域,现在我希望根据名字(而非全名)来提取对应的分数。在 Excel 中该如何实现这一操作?
VLOOKUP 部分匹配

步骤 1:应用公式并填充到其他单元格

请将以下公式复制或输入到空白单元格中,然后拖动填充柄,将公式填充到其他所需单元格:

=VLOOKUP(E2&"*", $A$2:$C$11, 3, FALSE)

结果:

所有匹配的分数均已返回,如下图所示:
应用并填充公式到其他单元格

注意:在上述公式中:

  • “E2&”*””是部分匹配的条件,表示您要查找以单元格 E2 中的值开头的任意内容。(通配符“)*”代表任意数量的字符)
  • “A2:C11”是您希望在其中搜索匹配值的数据区域;
  • “3”表示从数据区域的第 3 列返回匹配值;
  • “False”表示精确匹配。(使用通配符时,必须将 VLOOKUP 函数的最后一个参数设为 FALSE 或 0,以启用精确匹配模式。)
提示
  • 若要查找并返回以特定值结尾的匹配项,请将通配符“*”置于该值之前,并使用以下公式:
  • =VLOOKUP("*"&E2, $A$2:$C$11, 3, FALSE)

    要返回以特定值结尾的匹配值,请在该值前加上通配符
  • 要根据文本字符串的一部分(无论指定文本位于字符串的开头、结尾还是中间)查找并返回匹配值,只需在单元格引用或文本的两侧各添加两个星号(**)即可。请使用以下公式:
  • =VLOOKUP("*"&D2&"*", $A$2:$B$11, 2, FALSE)

    要根据文本字符串的一部分返回匹配值,请在单元格引用两侧各加一个星号

2.7 从其他工作表进行 VLOOKUP 查找

通常,您可能需要处理多个工作表,而 VLOOKUP 函数可用于从其他工作表中查找数据,其用法与在同一工作表中完全相同。

例如,您有两个如下图所示的工作表,若要从指定工作表中查找并返回对应数据,请按以下步骤操作:
从另一个工作表进行 VLOOKUP

步骤 1:应用公式并填充到其他单元格

请在需要获取匹配项的空白单元格中输入或粘贴以下公式,然后向下拖动填充柄,将该公式应用到目标单元格。

=VLOOKUP(A2,'Data sheet'!$A$2:$C$15,3,0)

结果:

您将获得所需的对应结果,请参见下图:

一个工作表中的数据向右箭头在另一个工作表中获取相应的结果

注意:在上述公式中:

  • “A2” 表示要查找的值;
  • “‘Data sheet‘!A2:C15” 表示在名为“Data sheet”的工作表中 A2:C15 范围内搜索值;(如果工作表名称包含空格或标点符号,需用单引号将工作表名称括起来,否则可直接使用工作表名称,例如:
    =VLOOKUP(A2,Datasheet!$A$2:$C$15,3,0))。
  • “3” 是包含您要返回的匹配数据的列号;
  • “0” 表示执行精确匹配。

2.8 从其他工作簿进行 VLOOKUP 查找

本节将为您介绍如何使用 VLOOKUP 函数,从不同工作簿中精准查找并返回匹配值。

例如,假设有两个工作簿:第一个工作簿包含产品列表及其对应成本;在第二个工作簿中,您希望提取每个产品项的对应成本(如下图所示)。
从另一个工作簿进行 VLOOKUP

步骤 1:应用公式

请先打开您要使用的两个工作簿,然后在第二个工作簿中用于显示结果的单元格内输入以下公式,并将其拖动复制到其他所需单元格中。

=VLOOKUP(B2,'[Product list.xlsx]Sheet1'!$A$2:$B$6,2,0)

结果:

应用并填充公式

注意:

  • 在上述公式中:
    • “B2” 表示查找值;
    • “'[Product list.xlsx]Sheet 1'!A2:B6” 表示在名为 Product list 的工作簿中,从 Sheet 1 工作表的 A2:B6 区域内进行搜索;(工作簿名称用方括号括起,整个“工作簿+工作表”名称则用单引号括起。)
    • “2” 是包含您要返回的匹配数据的列号;
    • “0” 表示返回精确匹配结果。
  • 如果查找工作簿已关闭,公式中将显示该查找工作簿的完整文件路径,如下图所示:
    如果查找的工作簿已关闭,公式中将显示该工作簿的完整文件路径

2.9 返回空白或特定文本,而非 0 或 #N/A 错误

通常,当您使用 VLOOKUP 函数返回对应值时,若匹配单元格为空,会返回 0;若未找到匹配值,则显示 #N/A 错误(如下图所示)。如果您希望显示空白单元格或特定值,而非 0 或 #N/A,本 VLOOKUP 返回空白或特定值而非 0 或 N/A 教程或许能为您提供帮助。

返回空白或指定文本,而不是 0 或 #N/A 错误


高级 VLOOKUP 示例

3.1 双向查找(行列交叉的 VLOOKUP)

有时,您可能需要执行二维查找,即同时根据行和列来定位特定值。例如,面对如下数据区域时,您或许希望快速获取某款产品在指定季度的对应数值。本节将为您介绍一个可在 Excel 中高效完成此类任务的公式。
在行和列中进行 VLOOKUP

在 Excel 中,您可以将 VLOOKUP 与 MATCH 函数结合使用,轻松实现双向查找。

请将以下公式输入到一个空白单元格中,然后按 Enter 键获取结果。

=VLOOKUP(G2, $A$2:$E$7, MATCH(H1, $A$2:$E$2, 0), FALSE)

结合使用 VLOOKUP 和 MATCH 函数获取结果

注意: 在上述公式中:

  • “G2” 是您希望基于此列中的查找值获取对应值的单元格;
  • “A2:E7” 是您要从中查找的数据表;
  • “H1” 是您希望基于此行中的查找值获取对应值的单元格;
  • “A2:E2” 是列标题所在的单元格;
  • “FALSE” 表示执行精确匹配。

3.2 基于两个或多个条件的 VLOOKUP 匹配值

根据单一条件查找匹配值对您来说轻而易举,但若面对两个或更多条件,又该如何应对?

3.2.1 使用公式基于两个或多个条件进行 VLOOKUP 匹配值

在这种情况下,Excel 中的 LOOKUP、MATCH 和 INDEX 函数可助您快速轻松地完成此任务。

例如,若您有如下数据表,并希望根据特定产品和尺寸返回对应的价格,以下公式或许能为您提供帮助。
基于两个或更多条件进行 VLOOKUP

步骤 1:应用以下任一公式

公式 1:输入以下公式,然后按“Enter”。

=LOOKUP(2,1/($A$2:$A$12=G1)/($B$2:$B$12=G2),($D$2:$D$12))

公式 2:输入以下公式,然后按下“Ctrl”+“Shift”+“Enter”。

=INDEX($D$2:$D$12,MATCH(1,($A$2:$A$12=G1)*($B$2:$B$12=G2),0))

结果:

应用任意一个公式获取结果

注意:

  • 上述公式中:
    • “A2:A12=G1” 表示在范围 A2:A12 中搜索 G1 的条件;
    • “B2:B12=G2”表示在区域 B2:B12 中搜索 G2 的条件;
    • “D2:D12”是您希望从中返回对应值的区域。 
  • 如果您有超过两个条件,只需将其他条件加入公式中,例如:
    =LOOKUP(2,1/($A$2:$A$12=G1)/($B$2:$B$12=G2)/($C$2:$C$12=G3),($D$2:$D$12))
    =INDEX($D$2:$D$12,MATCH(1,($A$2:$A$12=G1)*($B$2:$B$12=G2)*($C$2:$C$12=G3),0))
  • 如果有两个以上的条件,则将其他条件合并到公式中
3.2.2 使用 Kutools for Excel 基于两个或多个条件进行 VLOOKUP 匹配值

记住那些需要反复使用的复杂公式可能颇具挑战,影响您的工作效率。不过,“Kutools for Excel”提供了“Lookup 多条件查找”功能,只需轻点几下,即可根据一个或多个条件快速返回相应结果。

  1. 单击“Kutools”>“高级 LOOKUP”>“Lookup 多条件查找”即可启用此功能。
  2. 然后在对话框中根据您的数据指定操作。
注意:要使用此功能,请下载 Kutools for Excel 并享受 30 天免费试用

使用 Kutools 基于两个或更多条件进行 VLOOKUP

Kutools for Excel 提供超过 300 项高级功能,简化复杂任务,提升创造力与效率。结合 AI 功能,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……

3.3 基于一个或多个条件的 VLOOKUP 返回多个值

在 Excel 中,VLOOKUP 函数在搜索某个值时,若存在多个匹配项,仅返回第一个找到的结果。然而,您可能希望将所有匹配值以行、列或单个单元格的形式全部返回。本节将为您介绍如何在工作簿中基于一个或多个条件,高效返回多个匹配值。

3.3.1 基于一个或多个条件水平返回所有 VLOOKUP 匹配值

假设您有一个包含国家、城市和姓名的数据表(范围 A1:C14),现在希望水平返回所有来自“US”的姓名,如下图所示。要完成此任务,请点击此处,逐步获取结果

基于一个或多个条件水平查找所有匹配值

3.3.2 基于一个或多个条件垂直返回所有 VLOOKUP 匹配值

如果您需要根据特定条件垂直查找并返回所有匹配值(如下图所示),请点击此处查看详细解决方案

基于一个或多个条件垂直查找所有匹配值

3.3.3 基于一个或多个条件将所有 VLOOKUP 匹配值返回到单个单元格中

如果您希望将多个匹配值通过 VLOOKUP 查找并返回到一个单元格中,并用指定分隔符分隔,TEXTJOIN 新函数即可帮您快速轻松完成此任务

基于一个或多个条件将所有匹配值合并到单个单元格中

注意:


3.4 VLOOKUP 返回匹配单元格的整行

本节将为您介绍如何使用 VLOOKUP 函数检索匹配值所在的整行。

步骤 1:应用以下公式

请将以下公式复制或输入到您希望显示结果的空白单元格中,然后按 Enter 键获取第一个值。接着,向右拖动该公式单元格,直至整行数据全部显示。

=VLOOKUP($F$2,$A$1:$D$12,COLUMN(A1),FALSE)

结果:

现在,您可以看到整行数据已成功返回。如下图所示:
使用公式返回匹配单元格的整行数据

注意:在上述公式中:

  • “F2” 是您希望基于此值返回整行的查找值;
  • “A1:D12” 是您希望从中搜索查找值的数据区域;
  • “A1” 表示您的数据区域中的第一列编号;
  • “FALSE” 表示执行精确匹配查找。

提示:

  • 如果根据匹配值找到多行并希望返回所有对应行,请使用以下公式,然后同时按下“Ctrl”+“Shift”+“Enter”键以获取第一个结果。接着,向右拖动填充柄,再继续向下拖动填充柄,即可获取所有匹配的行。请参见下方演示:
    =IFERROR(INDEX(A:A,SMALL(IF(ISNUMBER(SEARCH($F$2,$A$2:$A$12)),ROW($A$2:$A$12),""),ROW()-1)),"")

3.5 Excel 中的嵌套 VLOOKUP

有时,您可能需要跨多个表格查找相互关联的值。此时,可将多个 VLOOKUP 函数嵌套使用,轻松获取最终结果。

例如,您的工作表中包含两个独立的表格:第一个表格列出了所有产品名称及其对应的销售人员,第二个表格则汇总了每位销售人员的总销售额。现在,若要查找每个产品的销售额(如下图所示),只需通过嵌套 VLOOKUP 函数即可轻松实现。
嵌套 VLOOKUP

嵌套 VLOOKUP 函数的通用公式如下:

=VLOOKUP(VLOOKUP(lookup_value, table_array 1, col_index_num 1, 0), table_array 2, col_index_num 2, 0)

注意:

  • “lookup_value” 是您要查找的值;
  • “Table_array 1”、“Table_array 2” 是包含查找值和返回值的表格;
  • “col_index_num 1” 表示在第一个表格中用于查找中间公共数据的列号;
  • “col_index_num 2” 表示在第二个表格中您要返回匹配值的列号;
  • “0” 用于实现精确匹配。

步骤 1:应用并填充以下公式

请将以下公式输入到一个空白单元格中,然后向下拖动填充柄,将其应用至您所需的单元格范围。

=VLOOKUP(VLOOKUP(G3,$A$3:$B$7,2,0),$D$3:$E$7,2,0)

结果:

现在,您将获得如下图所示的结果:
应用并填充公式

注意:在上述公式中:

  • “G3” 包含您要查找的值;
  • “A3:B7”、“D3:E7” 是包含查找值和返回值的表格范围;
  • “2” 表示返回匹配值所在范围中的列号。
  • “0” 表示 VLOOKUP 执行精确匹配。

3.6 根据另一列中的列表数据检查值是否存在

VLOOKUP 函数还能帮您根据另一列中的数据列表,快速核对某个值是否存在。例如,您可以在 C 列中查找姓名,并在 A 列中找到该姓名时返回“是”或“否”(如下图所示)。
根据另一列中的列表数据检查值是否存在

步骤 1:应用以下公式

请将以下公式输入到一个空白单元格中,然后向下拖动填充柄,将其应用至您希望填充该公式的单元格。

=IF(ISNA(VLOOKUP(C2,$A$2:$A$10,1,FALSE)), "No", "Yes")

结果:

您将获得所需的结果,见下图:
应用并填充公式

注意:在上述公式中:

  • “C2” 是您要检查的查找值;
  • “A2:A10” 是用于检查是否能找到待检索值区域的范围列表;
  • “FALSE” 表示执行精确匹配。

3.7 VLOOKUP 并对行或列中所有匹配值求和

处理数值数据时,您可能需要从表格中提取匹配的值,并对多行或多列中的数字进行求和。本节将为您介绍一些实用的公式,助您高效完成此类任务。

3.7.1 VLOOKUP 并对一行或多行中所有匹配值求和

假设您有一个包含多个月份销售额的产品列表(如下图所示),现在需要根据指定产品汇总其所有月份的订单总额。
VLOOKUP 并对一行中所有匹配值求和

步骤 1:应用以下公式

请将以下公式复制或输入到一个空白单元格中,然后同时按下“Ctrl”+“Shift”+“Enter”键,即可获得第一个结果。随后,向下拖动填充柄,将该公式快速复制到其他所需单元格中。

=SUM(VLOOKUP(H2, $A$2:$F$9, {2,3,4,5,6}, FALSE))

应用并填充公式

结果:

第一匹配值所在行的所有值已求和,见下图:
第一匹配值所在行的所有值被加总

注意:在上述公式中:

  • “H2” 是包含您要查找的值的单元格;
  • “A2:F9” 是数据区域(不含列标题),其中包含查找值和匹配值;
  • “{2,3,4,5,6}” 是用于计算范围总和的列号;
  • “FALSE” 表示精确匹配。

提示:如果您想对多行中的所有匹配项求和,请使用以下公式:

  • =SUMPRODUCT(($A$2:$A$9=H2)*$B$2:$F$9)
  • 应用公式对多行中的所有匹配值求和
3.7.2 VLOOKUP 并对一列或多列中所有匹配值求和

如果您希望对特定月份的总值求和(如下图所示),普通 VLOOKUP 函数可能难以胜任。此时,建议结合使用 SUM、INDEX 和 MATCH 函数来构建更灵活高效的公式。
VLOOKUP 并对一列中所有匹配值求和

步骤 1:应用以下公式

将以下公式输入一个空白单元格,然后向下拖动填充柄,即可将该公式快速复制到其他单元格。

=SUM(INDEX($B$2:$F$9,0,MATCH(H2,$B$1:$F$1,0)))

结果:

现在,基于特定月份的列中第一匹配值已求和,见下图:
应用并填充公式

注意:在上述公式中:

  • “H2” 是包含您要查找的值的单元格;
  • “B1:F1” 是包含查找值的列标题;
  • “B2:F9” 是包含您要汇总的数值的数据区域。

提示:若要对多列中所有匹配值执行 VLOOKUP 并求和,应使用以下公式:

  • =SUMPRODUCT($B$2:$F$9*(($B$1:$F$1)=H2))
  • 使用公式对多列中的所有匹配值求和
3.7.3 使用 Kutools for Excel VLOOKUP 并对第一匹配值或所有匹配值求和

上述公式可能不易记忆,此时我推荐使用“Kutools for Excel”中强大的“查找求和”功能。借助它,您可轻松在行或列中对首个匹配值或所有匹配值执行 VLOOKUP 并求和。

  1. 单击“Kutools”>“高级 LOOKUP”>“查找求和”,即可启用此功能。
  2. 然后根据您的需求,在对话框中指定相应操作。
注意:要使用此功能,请下载 Kutools for Excel 并享受 30 天免费试用
使用 Kutools 对第一个匹配值或所有匹配值进行 VLOOKUP 并求和
Kutools for Excel 提供超过 300 项高级功能,简化复杂任务,提升创造力与效率。结合 AI 功能,Kutools 精准自动化任务,让数据管理变得轻松自如。Kutools for Excel 的详细信息……         免费试用……
3.7.4 VLOOKUP 并对行和列中所有匹配值求和

如果您需要同时匹配列和行并对数值求和,例如获取产品“Sweater”在“Mar”月的总值(如下图所示)。
VLOOKUP 并对行和列中所有匹配值求和

此时,您可借助 SUMPRODUCT 函数轻松完成此任务。

请将以下公式应用到一个单元格中,然后按“ENTER 键”获取结果,见下图:

=SUMPRODUCT(($B$2:$F$9)*($B$1:$F$1=I2)*($A$2:$A$9=H2))

使用 SUMPRODUCT 函数获取结果

注意:在上述公式中:

  • “B2:F9” 是包含您要汇总的数值的数据区域;
  • “B1:F1” 是包含您要基于其进行汇总的查找值的列标题;
  • “I2” 是您要在列标题中查找的查找值;
  • “A2:A9” 是包含您要基于其进行汇总的查找值的行标题;
  • “H2” 是您要在行标题中查找的值。

3.8 使用关键列基于 VLOOKUP 合并两个表格

在日常数据分析工作中,您可能需要根据一个或多个关键列,将所有必要信息汇总到一张表格中。此时,不妨使用 INDEX 与 MATCH 函数组合,替代传统的 VLOOKUP 函数,让数据查找更灵活高效。

3.8.1 使用一个关键列基于 VLOOKUP 合并两个表格

例如,您有两个表格:第一个包含产品和姓名数据,第二个包含产品和订单数据。现在,您希望基于公共的“产品”列,将这两个表格合并为一个。
基于一个关键列使用 VLOOKUP 合并两个表格

步骤 1:应用以下公式

请将以下公式输入一个空白单元格,然后向下拖动填充柄,将其应用到您所需的单元格范围。

=INDEX($F$2:$F$8, MATCH($A2, $E$2:$E$8, 0))

结果:

现在,您将获得一个合并后的表格,其中订单列已根据关键列的数据与第一个表格成功关联。
应用并填充公式以获取结果

注意:在上述公式中:

  • “A2” 是您要查找的查找值;
  • “F2:F8” 是您要返回匹配值的数据范围;
  • “E2:E8” 是用于查找值的查找范围。
使用 3.8.2 VLOOKUP 根据多个关键列合并两个表格

如果要合并的两个表格包含多个关键列,并希望基于这些公共列进行合并,请按以下步骤操作。
基于多个关键列使用 VLOOKUP 合并两个表格

通用公式如下:

=INDEX(lookup_table, MATCH(1, (lookup_value 1=lookup_range 1) * (lookup_value 2=lookup_range 2), 0), return_column_number)

注意:

  • “lookup_table” 是包含查找数据和匹配记录的数据区域;
  • “lookup_value 1” 是您要查找的第一个条件;
  • “lookup_range 1” 是包含第一个条件的数据列表;
  • “lookup_value 2” 是您要查找的第二个条件;
  • “lookup_range 2” 是包含第二个条件的数据列表;
  • “return_column_number” 表示您要在 lookup_table 中返回匹配值的列号。

步骤 1:应用以下公式

请将下方公式输入到您希望放置结果的空白单元格中,然后同时按下“Ctrl”+“Shift”+“Enter”键以获取第一个匹配值,参见截图:

=INDEX($E$2:$G$9, MATCH(1, ($A2=$E$2:$E$9) * ($B2=$F$2:$F$9), 0), 3)

应用公式

步骤 2:将公式填充到其他单元格

然后,选中第一个包含公式的单元格,并拖动填充柄按需将此公式复制到其他单元格:
将公式填充到其他单元格

提示:在 Excel 2016 或更高版本中,您还可以使用“Power Query”功能,根据关键列将两个或多个表格轻松合并为一个。请点击此处逐步了解详细信息

3.9 VLOOKUP 跨多个工作表匹配值

您是否曾在 Excel 中需要跨多个工作表执行 VLOOKUP?例如,若您有三个包含区域的工作表,并希望根据这些工作表中的条件检索特定值,即可按照分步教程 跨多个工作表进行 VLOOKUP轻松完成此任务。

跨多个工作表进行 VLOOKUP


VLOOKUP 匹配值保留单元格格式

在查找匹配值时,原始单元格格式(如字体颜色、背景色、数据格式等)将无法保留。若需保留单元格或数据格式,本节将为您介绍一些实用技巧来解决这一问题。

4.1 VLOOKUP 匹配值并保留单元格颜色和字体格式

众所周知,常规的 VLOOKUP 函数仅能从另一数据区域中检索匹配值。然而,在某些场景下,您可能希望同时获取对应的值及其单元格格式(如填充颜色、字体颜色和字形)。本节将为您介绍如何在 Excel 中检索匹配值的同时,完整保留源格式。
VLOOKUP 并保留单元格格式

请按照以下步骤查找并返回其对应值,同时保留单元格格式:

步骤 1:将代码 1 复制到工作表代码模块中

  1. 在包含要执行 VLOOKUP 的数据的工作表中,右键单击工作表标签,然后从上下文菜单中选择“查看代码”。参见截图:
    右键单击工作表标签并选择“查看代码”
  2. 在打开的“Microsoft Visual Basic for Applications”窗口中,请将以下 VBA 代码复制到代码窗口内。
  3. VBA 代码 1:VLOOKUP 在获取查找值的同时保留单元格格式
  4. Sub Worksheet_Change(ByVal Target As Range)
    'Updateby Extendoffice
        Dim I As Long
        Dim xKeys As Long
        Dim xDicStr As String
        On Error Resume Next
        Application.ScreenUpdating = False
        xKeys = UBound(xDic.Keys)
        If xKeys >= 0 Then
            For I = 0 To UBound(xDic.Keys)
                xDicStr = xDic.Items(I)
                If xDicStr <> "" Then
                    Range(xDic.Keys(I)).Interior.Color = _
                    Range(xDic.Items(I)).Interior.Color
                    Range(xDic.Keys(I)).Font.FontStyle = _
                    Range(xDic.Items(I)).Font.FontStyle
                    Range(xDic.Keys(I)).Font.Size = _
                    Range(xDic.Items(I)).Font.Size
                    Range(xDic.Keys(I)).Font.Color = _
                    Range(xDic.Items(I)).Font.Color
                    Range(xDic.Keys(I)).Font.Name = _
                    Range(xDic.Items(I)).Font.Name
                    Range(xDic.Keys(I)).Font.Underline = _
                    Range(xDic.Items(I)).Font.Underline
                Else
                    Range(xDic.Keys(I)).Interior.Color = xlNone
                End If
            Next
            Set xDic = Nothing
        End If
        Application.ScreenUpdating = True
    End Sub
    
  5. 将代码1复制并粘贴到模块中

步骤 2:将代码 2 复制到模块窗口中

  1. 仍在“Microsoft Visual Basic for Applications”窗口中,单击“插入”>“模块”,然后将以下 VBA 代码 2 复制到模块窗口中。
  2. VBA 代码 2:VLOOKUP 在获取查找值的同时保留单元格格式
  3. Public xDic As New Dictionary
    Function LookupKeepFormat (ByRef FndValue, ByRef LookupRng As Range, ByRef xCol As Long)
        Dim xFindCell As Range
        On Error Resume Next
        Set xFindCell = LookupRng.Find(FndValue, , xlValues, xlWhole)
        If xFindCell Is Nothing Then
            LookupKeepFormat = ""
            xDic.Add Application.Caller.Address, ""
        Else
            LookupKeepFormat = xFindCell.Offset(0, xCol - 1).Value
            xDic.Add Application.Caller.Address, xFindCell.Offset(0, xCol - 1).Address
        End If
    End Function
    
  4. 将代码2复制并粘贴到模块中

步骤 3:选择 VBAproject 选项

  1. 插入上述代码后,在“Microsoft Visual Basic for Applications”窗口中,依次单击“工具”>“引用”。随后,在弹出的“引用 – VBAProject”对话框中,勾选“Microsoft Scripting Runtime”复选框。参见截图:
    单击“工具”>“引用”向右箭头在对话框中勾选“Microsoft Scripting Runtime”复选框
  2. 然后单击“确定”关闭对话框,并保存后关闭代码窗口。

步骤 4:输入公式以获取结果

  1. 现在返回工作表,应用以下公式,然后向下拖动填充柄,即可获取所有结果及其格式。参见截图:
    =LookupKeepFormat(E2,$A$1:$C$10,3)

    输入公式以获取带注释的结果

注意:在上述公式中:

  • “E2” 是您要查找的值;
  • “A1:C10” 是表格范围;
  • “3” 是您要从中检索匹配值的表格列号。

4.2 保留来自 VLOOKUP 的日期格式返回值

使用 VLOOKUP 函数查找并返回日期格式的值时,结果可能显示为数字。若要保留日期格式,请将 VLOOKUP 函数嵌套在 TEXT 函数中。
VLOOKUP 保留日期格式

步骤 1:应用以下公式

请将下方公式输入到一个空白单元格中,然后拖动填充柄,将其复制到其他单元格。

=TEXT(VLOOKUP(E2,$A$2:$C$9,3,FALSE),"mm/dd/yyyy")

结果:

所有匹配的日期均已返回,如下方截图所示:
应用并填充公式

注意:在上述公式中:

  • “E2”是查找值;
  • “A2:C9” 是查找范围;
  • “3” 是您要返回值的列号;
  • “FALSE” 表示执行精确匹配;
  • “mm/dd/yyyy” 是您希望保留的日期格式。

4.3 从 VLOOKUP 返回批注

您是否曾在 Excel 中需要使用 VLOOKUP 同时获取匹配单元格的数据及其关联批注(如下方截图所示)?如果是,下面提供的用户自定义函数可助您轻松实现这一需求。

步骤 1:将代码复制到模块中

  1. 按下“Alt”+“F11”组合键,即可打开“Microsoft Visual Basic for Applications”窗口。
  2. 单击“插入”>“模块”,然后将以下代码复制并粘贴到弹出的“模块”窗口中。
    VBA 代码:Vlookup 并返回带批注的匹配值:
    Function VlookupComment(LookVal As Variant, FTable As Range, FColumn As Long, FType As Long) As Variant
    'Updateby Extendoffice
        Application.Volatile
        Dim xRet As Variant 'could be an error
        Dim xCell As Range
        xRet = Application.Match(LookVal, FTable.Columns(1), FType)
        If IsError(xRet) Then
            VlookupComment = "Not Found"
        Else
            Set xCell = FTable.Columns(FColumn).Cells(1)(xRet)
            VlookupComment = xCell.Value
            With Application.Caller
                If Not .Comment Is Nothing Then
                    .Comment.Delete
                End If
                If Not xCell.Comment Is Nothing Then
                    .AddComment xCell.Comment.Text
                End If
            End With
        End If
    End Function
  3. 然后保存并关闭代码窗口。

步骤 2:输入公式以获取结果

  1. 现在请输入以下公式,并拖动填充柄将其复制到其他单元格。该公式将同时返回匹配值和批注,如下图所示:
    =vlookupcomment(D2,$A$2:$B$9,2,FALSE)

    输入公式以获取带批注的结果

注意:在上述公式中:

  • “D2”是您希望返回其对应值的查找值;
  • “A2:B9” 是您要使用的数据表;
  • “2” 是包含您要返回的匹配值的列号;
  • “FALSE” 表示执行精确匹配。

4.4 VLOOKUP 查找以文本形式存储的数字

例如,您的数据区域中,原始表格的 ID 号为数字格式,而查找单元格中的 ID 号却以文本形式存储,此时使用常规 VLOOKUP 函数可能会返回 #N/A 错误。为确保准确检索信息,您可以在 VLOOKUP 函数中嵌套 TEXT 和 VALUE 函数。以下是实现该目的的公式:
VLOOKUP 以文本形式存储的数字

步骤 1:应用并填充以下公式

请将以下公式输入到一个空白单元格中,然后向下拖动填充柄以复制该公式。

=IFERROR(VLOOKUP(VALUE(D2),$A$2:$B$8,2,0),VLOOKUP(TEXT(D2,0),$A$2:$B$8,2,0))

结果:

现在,您将获得如下方截图所示的正确结果:
应用并填充公式

注意:

  • 在上述公式中:
    • “D2”是您希望返回其对应值的查找值;
    • “A2:B8”是您要使用的数据表;
    • “2”是包含您要返回的匹配值的列号;
    • “0”表示获取精确匹配。
  • 即使您不确定哪些位置是数字、哪些是文本,此公式依然适用。