跳至主要内容

如何在 Excel 中将 VLOOKUP() 与 IF() 结合使用

将 VLOOKUP() 与 IF() 结合,实现高效数据分析,包括条件查找、错误处理和动态列索引。
· 10分钟 阅读

使用 AI 探索

如果您在 Excel 中管理大型数据集,就会知道高效地组织和分析这些数据有多具挑战。我有一个解决方案:您可以将 VLOOKUP() 函数嵌套在 IF() 语句中,根据特定条件创建动态查找。通过这种方式,您可以根据条件在不同表中查找数据,同时更优雅地处理错误。

具体来说,VLOOKUP() 用于在表中查找特定数据点,而 IF() 语句允许您基于该数据做出条件判断。这两个函数都非常重要。本文将在此基础上再添一件利器:您将学习如何将这两个函数结合使用来执行条件查找,并通过实际示例进行说明。

快速答案:如何将 VLOOKUP() 与 IF() 组合

要创建条件查找,从一个 IF() 语句开始,并在其中使用 VLOOKUP(),根据条件返回不同结果。我们可以用下面的代码根据数量检查某产品是否有库存。请按以下步骤操作:

  • 从 IF() 函数开始:=IF()

  • 在 IF() 函数内部使用 VLOOKUP()。

=IF(VLOOKUP(C2, $A$2:$B$6, 2, FALSE) > 0, "In Stock", "Out of Stock")

理解 Excel 中的 VLOOKUP() 和 IF() 语句

VLOOKUP() 帮助您在表中查找数据,而 IF() 语句让您可以基于这些数据做出判断。两者结合能更好地分析电子表格中的信息。我们先分别看每个函数,再把它们组合起来。

Excel 中的 VLOOKUP() 是什么?

VLOOKUP() 在某个区域的第一列中搜索指定值,并返回同一行中另一列的值。下面是语法,便于您在大型数据集中使用 VLOOKUP() 公式。

=VLOOKUP(search_key, range, index, is_sorted)

我们来拆解这段语法并理解其含义:

  • Search_key 是您要搜索的值。可以是数字、文本,或包含搜索值的单元格引用。

  • Range 定义包含数据的单元格区域。该区域的第一列应包含 search_key。

  • Index 是您希望取值的列在该区域中的列号。第一列为 1,第二列为 2,依此类推。

  • Is_sorted 是逻辑值(TRUE 或 FALSE)。对数字可用 TRUE(或 1),对文本用 FALSE(或 0)。若为 TRUE,VLOOKUP() 假定区域的第一列已按升序排序并返回最接近的匹配;若为 FALSE,则查找精确匹配。如未指定,默认 TRUE。

我们用一个示例来理解。这里有一份产品清单,包含它们的 ID 和价格。我想根据产品名称查找其价格。

list of product.

包含产品 ID 和价格的清单。来源:作者制作。

首先,我要查找平板电脑的价格。为此,我在任意单元格中输入一个 search_key 值(此处为 Tablet)。

Enter the value to find the price of it

输入要查找价格的值。来源:作者制作。

接着,我选中一个单元格并输入 =VLOOKUP()。

Typing the VLOOKUP formula in Excel

输入 VLOOKUP() 公式。来源:作者制作。

然后,我选择输入 search_key 的单元格。

selecting the column.

选择产品所在的列。来源:作者制作。

接着,我选择表格的区域。

selecting the table's  range.

选择表格的范围。来源:作者制作。

从左往右计数,我输入要取值的列序号。此处我需要价格,所以输入 2。

selecting the index of the table.

选择列的序号。来源:作者制作。

然后,我输入 FALSE 以获取精确匹配。

type false to get the exact match.

输入 FALSE 以进行精确匹配。来源:作者制作。

填完所有参数后,我按下 Enter:

Using VLOOKUP the price of the product is achieved in excel.

使用 VLOOKUP() 成功获取产品价格。来源:作者制作。

如图所示,VLOOKUP() 成功返回了价格。

Excel 中的 IF() 是什么?

IF() 语句比较数值并根据指定条件进行判断。语法如下:

=IF(logical_test, [value_if_true], [value_if_false])

我们来看关键部分:

  • Logical_test 是您要评估为 TRUE 或 FALSE 的值或表达式,即您要检查的条件。

  • Value_if_true 是当 logical_test 为 TRUE 时返回的值。

  • Value_if_false 是当 logical_test 为 FALSE 时返回的值。

举个例子。这里我想根据学生的分数给出评语。所以我准备了包含两列的工作表:STUDENTS 和 GRADES。

A sheet containing the list of students with their grades

包含学生及其分数的工作表。来源:作者制作。

我选中一个单元格并输入 =IF()。我的目标是检查总分是否大于 50,若是则输出 Excellent,若小于 50 则输出 Bad。设置好条件后,按下 Enter 获取结果。

使用 IF 语句为所有学生分配评语。来源:作者制作。

随后,我通过拖动将公式复制到最后一个有数据的单元格。您可以看到结果:仅用一个公式就为所有学生分配了评语。

在 Excel 中组合 VLOOKUP() 与 IF() 的方法

我们通过实际示例来理解 VLOOKUP() 与 IF() 如何配合工作。

条件查找

要创建条件查找,如前所述,从一个 IF() 语句开始,并在其中使用 VLOOKUP(),根据条件返回不同结果。

  1. 从 IF() 函数开始:=IF()。

  2. 在 IF() 函数内部使用 VLOOKUP()。

我们试一个新例子:这里有一份产品订单清单以及对应的下单时间。我想查看某个特定产品是否在中午 12:00 之前下单。

  A table containing product list along with order ID and time.

包含产品、订单 ID 和时间的表格。来源:作者制作。

首先,我选中一列并输入以下公式:

=IF(VLOOKUP(A3, A2:C5,3, FALSE) < TIME(12, 0, 0), "Ordered Before Noon", "Ordered After Noon")

这里,VLOOKUP() 在 A 列中查找 Banana,并从 B 列返回相应的下单时间。

IF() 语句检查下单时间是否小于 12。若是,则返回 Ordered Before Noon;否则返回 Ordered After Noon。

Calculating the delivery time by combining IF and VLOOKUP formula.

结合 IF() 与 VLOOKUP() 计算下单时间。来源:作者制作。

您可以看到,我如何用条件查找轻松跟踪所需产品的下单情况。

错误处理

要处理错误,从一个 IF() 语句开始,并在其中将 ISNA() 与 VLOOKUP() 结合以检查错误。例如,若找不到产品时显示自定义消息:

  1. 从 IF() 函数开始:=IF()。

  2. 在 IF() 函数内,将 ISNA() 与 VLOOKUP() 结合来检查错误。

我们用示例来说明。假设我有一个包含产品价格的表格,想在未找到产品时显示自定义消息。

A table containing lit if product and their price.

包含产品及其价格的表格。来源:作者制作。

为此,我选中一个单元格并输入以下公式来查找价格:

=(VLOOKUP(B7, $A$2:$B$5, 2, FALSE)

然后,我将其与 ISNA() 和 IF() 组合以处理任意错误。

=IF(ISNA(VLOOKUP(B7, $A$2:$B$5, 2, FALSE)), "Product Not Found", (VLOOKUP(B7, $A$2:$B$5, 2, FALSE)))

error handling using IF and ISNA formula

通过结合 IF() 与 ISNA() 处理错误。来源:作者制作。

这里,ISNA() 检查 VLOOKUP() 是否返回 #N/A 错误(即未找到)。换言之,若 ISNA() 结果为 TRUE,则 IF() 返回 Product Not Found;否则返回 VLOOKUP() 的价格。

动态列索引

要为 VLOOKUP() 动态选择列索引,从一个 IF() 语句开始,并在其中使用 VLOOKUP(),根据条件选择不同列。例如,可基于阈值来查找不同列:

  1. 从 IF() 函数开始:=IF()。

  2. 在 IF() 函数内使用 VLOOKUP() 检查阈值并选择列。

这里有一个产品表:A 列为产品名称,B 列为产品价格,C 列为库存数量。我想根据价格是否高于某个阈值(如 50)来返回产品价格或库存数量。

A table containing list of products their IDs and prices.

包含产品、其 ID 和价格的表格。来源:作者制作。

我选中一个单元格,输入以下公式:

=IF(VLOOKUP(B9, $B$9:$D$14, 2, FALSE) > 50, VLOOKUP(B9,$B$9:$D$14, 3, FALSE), VLOOKUP(B9,$B$9:$D$14, 2, FALSE))

Applying IF with nested VLOOKUP.

在 IF() 中嵌套 VLOOKUP()。来源:作者制作。

该公式的工作原理如下:

  • (VLOOKUP(B9, $B$9:$D$14, 2, FALSE) 在 A 列中查找 B9 的产品,并从 C 列返回价格。

  • IF() 语句检查价格是否大于 $50。

  • 若为真,返回库存数量:VLOOKUP(B9,$B$9:$D$14, 3, FALSE)。

  • 若为假,返回产品 ID:VLOOKUP(B9,$B$9:$D$14, 2, FALSE))。

如果您处理的是非常大的数据集,可以通过拖动将公式复制到最后一个有数据的单元格。

Showing results using IF and VLOOKUP.

显示结果。来源:作者制作。

就是这样。如您所见,我们可以通过组合公式,根据特定条件提取所需信息。

使用 VLOOKUP() 和 IF() 的进阶技巧

既然您已基本掌握将 IF() 与 VLOOKUP() 结合,接下来看看我亲自尝试过的一些进阶技巧。

组合多重条件

当需要基于多重条件进行查找时,您可以在一个 IF() 语句中组合多个 VLOOKUP() 函数,检查是否满足所有条件。

这里有一张包含客户购买数据与会员状态的表。我想检查某位客户是否符合忠诚度计划资格,该计划要求 TOTAL PURCHASE ($) 至少为 500,且 MEMBERSHIP STATUS 为 Gold。

a table with customers' details.

包含客户详细信息的表格。来源:作者制作。

我创建了一个名为 Eligibility 的新列,显示符合条件与否。然后输入以下公式并按下 Enter:

=IF(AND(VLOOKUP(B2, $B$2:$D$11, 2, FALSE) >= 500, VLOOKUP(B2, $B$2:$D$11, 3, FALSE) = "Gold"), "Eligible", "Not Eligible")

Checking the eligibility criteria of customers’ by combining multiple criteria.

通过组合多重条件检查客户资格。来源:作者制作。

该公式的工作原理如下:

  • VLOOKUP(B2, $B$2:$D$11, 2, FALSE) >= 500 检查该客户的总购买额是否至少为 $500。

  • VLOOKUP(B2, $B$2:$D$11, 3, FALSE) = "Gold") 检查 John 的会员状态是否为 Gold。

  • AND 将条件组合,确保两者同时为真。
  • IF() 在两个条件都成立时返回 Eligible,否则返回 Not Eligible。

将 VLOOKUP() 与 IF() 用于计算

您可以使用 VLOOKUP() 找到某个值,然后通过 IF() 语句基于该值执行计算。

这里我准备了一张包含产品及其价格的工作表。然后,我希望对价格高于 $100 的产品打 9 折。

A table containing list of products with their prices.

包含产品及其价格的表格。来源:作者制作。

因此,我创建了一个名为 DISCOUNT 的新列,并在该列中输入以下公式以显示折扣后价格。

=IF(VLOOKUP(A2, $A$2:$B$10, 2, FALSE) > 100, VLOOKUP(A2, $A$2:$B$10, 2, FALSE) * 0.9, VLOOKUP(A2, $A$2:$B$10, 2, FALSE))

该公式的工作原理如下:

  • VLOOKUP(A2, $A$2:$B$10, 2, FALSE) 获取产品价格,为 56。

  • =IF(VLOOKUP(A2, $A$2:$B$10, 2, FALSE) > 100, ..., ...) 检查该产品价格是否大于 100。

  • 若条件为真,VLOOKUP(A2, $A$2:$B$10, 2, FALSE) * 0.9 应用 10% 折扣。

  • (VLOOKUP(A2, $A$2:$B$10, 2, FALSE)) 对不满足折扣条件的产品,返回其原价。

就这样,我得到了该产品的最终结果 135。要获取所有产品的结果,您可以向下拖动复制公式到最后一个有数据的单元格。

Using VLOOKUP with IF for Calculating the discounts on products whose prices are greater than 100.

将 VLOOKUP() 与 IF 结合,计算价格高于 100 的产品的折扣价。来源:作者制作。

处理大型数据集

在处理庞大数据集时,您也可以将 VLOOKUP() 与 IF() 结合,以优化数据检索与错误处理。

最后一个示例:我有一张员工信息表,想根据员工 ID 获取其部门,并在员工 ID 不存在时进行处理。

包含员工 ID 与部门的员工列表。来源:作者制作。

于是,我选中一个单元格并输入以下公式:

=IFERROR(VLOOKUP(E3, $A$2:$C$18, 3, FALSE), "Not Found")

按下 Enter 后,我拖动复制该公式到其他单元格。

通过 ID 获取员工部门,并在未找到员工时进行错误处理。来源:作者制作。

如上图所示。该公式的工作原理如下:

  • VLOOKUP(E3, $A$2:$C$18, 3, FALSE) 获取员工的部门。

  • IFERROR 负责错误处理。若出现错误(#N/A),将显示友好的自定义消息。

简而言之,您不必再在表格中反复查找。将 VLOOKUP() 与 IF() 结合后,您就能在 Excel 中轻松应对最大的数据显示任务。

结语

通过将 VLOOKUP() 与 IF() 语句结合,您可以创建更加准确且更具抗错性的电子表格。请务必动手尝试文中的示例,看看这些技巧如何简化数据管理任务并提升您的 Excel 技能。

如果您想提升技能,请查看我们的 Introduction to Excel 课程,然后升级到 Excel Fundamentals 技能路径以掌握基础。熟悉这些函数后,可通过我们的 Data Analysis in Excel 课程提升分析能力。若您更偏向金融方向,请查看我们的 Financial Modeling in Excel 课程以融入财务洞见。

此外,我们的 Data Preparation in Excel 课程将帮助您优化数据清洗流程,而 Data Visualization in Excel 课程将帮助您以更具说服力的方式呈现数据。

Laiba Siddiqui

作者

Laiba Siddiqui

我是内容策略专家,热衷于将复杂主题化繁为简。我曾帮助 Splunk、Hackernoon 和 Tiiny Host 等公司为其受众打造兼具吸引力与信息量的内容。

常见问题

VLOOKUP() 能处理多重条件吗?

VLOOKUP() 本身无法处理多重条件,但您可以在 IF() 语句中使用它,或将其与 AND 等函数结合来实现。

VLOOKUP() 函数中 TRUE 和 FALSE 有何区别?

TRUE(或省略)表示近似匹配,而 FALSE 指定对查找值进行精确匹配。

在将 VLOOKUP() 与 IF() 结合时,AND 函数的作用是什么?

AND 函数用于在 IF() 语句中检查多个条件,从而在 VLOOKUP() 操作中实现更复杂的判定标准。

主题