您很可能听说过 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()。假设您有一个简单的产品与价格表,如下:

比如您想知道香蕉的价格。您可以使用:
=VLOOKUP("Banana", A2:B4, 2, FALSE)技术支持
该公式将返回 $0.30。
当然,硬编码查找值并不总是理想做法,这就引出了下一点:
用单元格引用替代硬编码的 VLOOKUP()
在上一个示例中,我对查找值进行了硬编码。在实际应用中,您通常会引用某个单元格。这样公式就更灵活、可复用。例如,如果您在 D2 单元格中输入 "Orange",就可以使用:

=VLOOKUP(D2, A2:B4, 2, FALSE)技术支持
现在,只要您更改 D2 的值,公式就会抓取对应的价格,而无需修改公式本身。
VLOOKUP() 的精确匹配 vs. 近似匹配
您可能会好奇第四个参数 [range_lookup]。有时它无关紧要,但有时会对结果产生很大影响。一个经验法则是,大多数情况下您会使用 FALSE 来做精确匹配。
来看一个近似匹配的示例:
假设您有如下税率表:

如果您的收入是 $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() 组合经常被推荐,原因如下:
以下是 XLOOKUP() 与 VLOOKUP() 的比较:
一些技巧与快捷方法
基于我们已覆盖的内容,以下是一些实用的 VLOOKUP() 小技巧:
-
绝对 引用:向下填充公式时,用 $ 锁定 table_array(如 $A$2:$B$100),以保持区域不变。
-
排序:用于近似匹配(TRUE)时,确保查找列按升序排序。
-
部分 匹配:VLOOKUP() 不直接支持使用通配符进行部分匹配,除非对 range_lookup 使用 TRUE 或采用一些巧妙的变通方法。
结语
我们还有更多关于特定 VLOOKUP() 用例的优质教程。请阅读我们的合集:
接着,为了获得系统的学习路径,帮助您将以上内容置于更好的语境并显著提升技能,欢迎报名我们的 Data Analysis in Excel 与 Advanced Excel Functions 课程。这真的是持续提升 Excel 水平的最佳方式。
您很可能听说过
VLOOKUP()。它是 Excel 中最知名的函数之一(如果不是最知名的话)。一旦您弄清它的工作原理,您会喜欢用它,因为它能解决一个出了名棘手且耗时的问题。VLOOKUP本质上是微软帮您找回大量时间的方式。在本文中,我将揭开
VLOOKUP()的神秘面纱,并带您了解它最常见的用法。如果您日后忘了某个参数,也随时可以回到这篇文章查阅。VLOOKUP() 有什么用?
既然已经铺垫好了,让我们明确
VLOOKUP()实际上是做什么的。本质上,
VLOOKUP()会在表格(或单元格区域)的第一列中搜索某个值,并返回同一行中另一列的值。可以把它理解为这样一个请求:“在我的列表里找到这个项目,并把同一行的另一个内容给我。”
每次使用时都有四个重要参数:
lookup_value:您要搜索的值。table_array:包含数据的单元格区域(既包括要搜索的列,也包括要返回的列)。col_index_num:在 table_array 中要返回值的列序号(最左边的列从1开始计数)。[range_lookup]:可选。输入FALSE表示精确匹配(通常这是您想要的),或TRUE表示近似匹配。VLOOKUP()是一个必须理解其参数的函数。并非所有函数都这样,但VLOOKUP()的确如此。Excel VLOOKUP() 基本示例
让我们开始动手用
VLOOKUP()。假设您有一个简单的产品与价格表,如下:比如您想知道香蕉的价格。您可以使用:
"Banana"是您要搜索的值。A2:B4是数据区域。2告诉 Excel 从第二列(价格列)返回值。FALSE表示您需要精确匹配。(稍后会详细讲这个参数。这通常是最让人困惑的。)该公式将返回
$0.30。当然,硬编码查找值并不总是理想做法,这就引出了下一点:
用单元格引用替代硬编码的 VLOOKUP()
在上一个示例中,我对查找值进行了硬编码。在实际应用中,您通常会引用某个单元格。这样公式就更灵活、可复用。例如,如果您在
D2单元格中输入 "Orange",就可以使用:现在,只要您更改
D2的值,公式就会抓取对应的价格,而无需修改公式本身。VLOOKUP() 的精确匹配 vs. 近似匹配
您可能会好奇第四个参数
[range_lookup]。有时它无关紧要,但有时会对结果产生很大影响。一个经验法则是,大多数情况下您会使用FALSE来做精确匹配。对于姓名、ID 或产品编码等需要精准匹配的场景,请使用
FALSE。对于范围(如税率区间或评分等级)这类希望取“不超过目标的最接近值”的情况,请使用
TRUE。但请记住(这也很重要):当使用TRUE时,您的查找列必须按升序排序。来看一个近似匹配的示例:
假设您有如下税率表:
如果您的收入是
$15,000:Excel 会找到小于或等于
15000的最接近值(即10000),并返回15%。不过,针对大多数查找,还是建议坚持使用
FALSE。常见陷阱与局限
和其他工具一样,
VLOOKUP()也有一些局限性,以免您日后踩坑。以下是几点需要注意的地方:只能从左往右查找。这是首先想到的一大限制。
VLOOKUP()总是在table_array的第一列中搜索,并从其右侧列返回数据。如果您需要向左查找,就得另想办法。列序号是静态的。如果您在表中插入或删除列,
col_index_num可能会指向错误的列。有时如果出问题,您会看到整列的#N/A错误,但有时问题更不易察觉。在大型数据集上可能较慢。对于非常大的表,性能可能会出现明显差异。如果您已找到所需的值且不再需要动态查找,您可以使用 复制 > 选择性粘贴 来减轻工作簿负担。
如果遇到这些问题,可以考虑使用
INDEX()+MATCH(),或较新的XLOOKUP()函数(如果您的 Excel 版本可用)作为替代。(我会在后文的一个部分帮您厘清这些函数的差异。)让您的 VLOOKUP() 更灵活
在熟悉基础用法后,让我们让
VLOOKUP()公式更灵活、更易管理。一个很棒的技巧是使用命名区域。比如,选中A2:B4,在所谓的名称 框中输入 “ProductTable”,此后您的公式就可以引用该名称:这样可显著提升公式的可读性与可维护性,尤其当您的表会移动位置时。
优雅处理 VLOOKUP() 错误
有时
VLOOKUP()找不到要搜索的值,会返回#N/A错误。为使表格更整洁、对用户更友好,您可以使用 IFERROR() 来捕获这些错误:这样,缺失值将显示为 "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 水平的最佳方式。