跳至主要内容

VLOOKUP() Excel:它是什么以及如何使用

跨表查找数据。快速定位数值。无需手动搜索即可组织信息。
· 7分钟 阅读

使用 AI 探索

您很可能听说过 VLOOKUP()。它是 Excel 中最知名的函数之一(如果不是最知名的话)。一旦您弄清它的工作原理,您会喜欢用它,因为它能解决一个出了名棘手且耗时的问题。VLOOKUP 本质上是微软帮您找回大量时间的方式。 

在本文中,我将揭开 VLOOKUP() 的神秘面纱,并带您了解它最常见的用法。如果您日后忘了某个参数,也随时可以回到这篇文章查阅。 

VLOOKUP() 有什么用?

既然已经铺垫好了,让我们明确 VLOOKUP() 实际上是做什么的。 

本质上,VLOOKUP() 会在表格(或单元格区域)的第一列中搜索某个值,并返回同一行中另一列的值。 

可以把它理解为这样一个请求:“在我的列表里找到这个项目,并把同一行的另一个内容给我。”

每次使用时都有四个重要参数: 

=VLOOKUP(lookup_value, table_array, col_index_num, [range_lookup])
  • lookup_value:您要搜索的值。

  • table_array:包含数据的单元格区域(既包括要搜索的列,也包括要返回的列)。

  • col_index_num:在 table_array 中要返回值的列序号(最左边的列从 1 开始计数)。

  • [range_lookup]:可选。输入 FALSE 表示精确匹配(通常这是您想要的),或 TRUE 表示近似匹配。

VLOOKUP() 是一个必须理解其参数的函数。并非所有函数都这样,但 VLOOKUP() 的确如此。 

Excel VLOOKUP() 基本示例

让我们开始动手用 VLOOKUP()。假设您有一个简单的产品与价格表,如下: 

Excel VLOOKUP 基本示例

比如您想知道香蕉的价格。您可以使用:

=VLOOKUP("Banana", A2:B4, 2, FALSE)
  • "Banana" 是您要搜索的值。

  • A2:B4 是数据区域。

  • 2 告诉 Excel 从第二列(价格列)返回值。

  • FALSE 表示您需要精确匹配。(稍后会详细讲这个参数。这通常是最让人困惑的。)

该公式将返回 $0.30。 

当然,硬编码查找值并不总是理想做法,这就引出了下一点:

用单元格引用替代硬编码的 VLOOKUP()

在上一个示例中,我对查找值进行了硬编码。在实际应用中,您通常会引用某个单元格。这样公式就更灵活、可复用。例如,如果您在 D2 单元格中输入 "Orange",就可以使用:

使用单元格引用的 Excel VLOOKUP

=VLOOKUP(D2, A2:B4, 2, FALSE)

现在,只要您更改 D2 的值,公式就会抓取对应的价格,而无需修改公式本身。 

VLOOKUP() 的精确匹配 vs. 近似匹配

您可能会好奇第四个参数 [range_lookup]。有时它无关紧要,但有时会对结果产生很大影响。一个经验法则是,大多数情况下您会使用 FALSE 来做精确匹配。

  • 对于姓名、ID 或产品编码等需要精准匹配的场景,请使用 FALSE。

  • 对于范围(如税率区间或评分等级)这类希望取“不超过目标的最接近值”的情况,请使用 TRUE。但请记住(这也很重要):当使用 TRUE 时,您的查找列必须按升序排序。

来看一个近似匹配的示例:

假设您有如下税率表:

使用近似匹配的 Excel VLOOKUP

如果您的收入是 $15,000:

=VLOOKUP(15000, A2:B4, 2, TRUE)

Excel 会找到小于或等于 15000 的最接近值(即 10000),并返回 15%。

不过,针对大多数查找,还是建议坚持使用 FALSE。

常见陷阱与局限

和其他工具一样,VLOOKUP() 也有一些局限性,以免您日后踩坑。以下是几点需要注意的地方:

  • 只能从左往右查找。这是首先想到的一大限制。VLOOKUP() 总是在 table_array 的第一列中搜索,并从其右侧列返回数据。如果您需要向左查找,就得另想办法。

  • 列序号是静态的。如果您在表中插入或删除列,col_index_num 可能会指向错误的列。有时如果出问题,您会看到整列的 #N/A 错误,但有时问题更不易察觉。 

  • 在大型数据集上可能较慢。对于非常大的表,性能可能会出现明显差异。如果您已找到所需的值且不再需要动态查找,您可以使用 复制 > 选择性粘贴 来减轻工作簿负担。 

如果遇到这些问题,可以考虑使用 INDEX() + MATCH(),或较新的 XLOOKUP() 函数(如果您的 Excel 版本可用)作为替代。(我会在后文的一个部分帮您厘清这些函数的差异。)

让您的 VLOOKUP() 更灵活

在熟悉基础用法后,让我们让 VLOOKUP() 公式更灵活、更易管理。一个很棒的技巧是使用命名区域。比如,选中 A2:B4,在所谓的名称 框中输入 “ProductTable”,此后您的公式就可以引用该名称:

=VLOOKUP(D2, ProductTable, 2, FALSE)

这样可显著提升公式的可读性与可维护性,尤其当您的表会移动位置时。

优雅处理 VLOOKUP() 错误

有时 VLOOKUP() 找不到要搜索的值,会返回 #N/A 错误。为使表格更整洁、对用户更友好,您可以使用 IFERROR() 来捕获这些错误:

=IFERROR(VLOOKUP(D2, ProductTable, 2, FALSE), "Not found")

这样,缺失值将显示为 "Not found",而不是难看的错误提示。

VLOOKUP() vs. INDEX()/MATCH() vs. XLOOKUP()

我之前已开始提到替代函数。 

INDEX() 和 MATCH() 组合经常被推荐,原因如下:

  • INDEX()/MATCH() 允许您向任意方向查找,而不仅仅是向右,这解决了我前面提到的 VLOOKUP() 的一大限制。

  • 查找列不必是区域中的第一列。

  • 插入或删除列不会破坏您的公式。

以下是 XLOOKUP() 与 VLOOKUP() 的比较:

  • XLOOKUP() 通过将两者功能合并到一个更直观的公式中,取代了 VLOOKUP() 和 INDEX()/MATCH()。

  • 您可以向左、向右、向上或向下查找。

  • 它不要求查找列处于固定位置。

  • 如果未找到结果,您可以定义后备值,从而避免讨厌的 #N/A,也无需使用我之前展示的 IFERROR() 修补。

一些技巧与快捷方法

基于我们已覆盖的内容,以下是一些实用的 VLOOKUP() 小技巧:

  • 绝对 引用:向下填充公式时,用 $ 锁定 table_array(如 $A$2:$B$100),以保持区域不变。

  • 排序:用于近似匹配(TRUE)时,确保查找列按升序排序。

  • 部分 匹配:VLOOKUP() 不直接支持使用通配符进行部分匹配,除非对 range_lookup 使用 TRUE 或采用一些巧妙的变通方法。

结语

我们还有更多关于特定 VLOOKUP() 用例的优质教程。请阅读我们的合集:

接着,为了获得系统的学习路径,帮助您将以上内容置于更好的语境并显著提升技能,欢迎报名我们的 Data Analysis in Excel 与 Advanced Excel Functions 课程。这真的是持续提升 Excel 水平的最佳方式。

Josef Waples

作者

Josef Waples

我是数据科学编辑,曾为科学期刊发表的研究论文撰稿。我的兴趣领域包括线性代数、统计学、R 等相关主题。

主题