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

Excel INDEX MATCH:基础与高级查找

作者Amanda Li修改日期

在 Excel 中,精准检索特定数据是一项常见且关键的需求。虽然 INDEX 和 MATCH 函数各自优势突出,但将二者强强联合,即可解锁一套功能强大的数据查找利器。它们不仅支持基础的横向与纵向查找,更能轻松实现双向查找、区分大小写的精确匹配,以及多条件联合查询等高级功能。相比 VLOOKUP,INDEX 与 MATCH 的组合提供了更灵活、更全面的数据查找解决方案。在本教程中,我们将深入探索这对黄金搭档所能释放的无限潜能。


如何在 Excel 中使用 INDEX 和 MATCH

在使用 INDEX 和 MATCH 函数之前,先来了解它们如何助您精准查找所需数值。


如何在 Excel 中使用 INDEX 函数

Excel 中的 INDEX 函数可返回指定范围内特定位置的值。其语法如下:

=INDEX(array, row_num, [column_num])
  • array(必填)指您希望从中返回值的区域。
  • row_num(必填,除非已提供 )column_num)指数组中的行号。
  • column_num(可选,但如果省略了 )row_num,则必须提供)指数组中的列号。

例如,若要查询 Jeff 的分数,即列表中第 6 名学生的成绩,可以这样使用 INDEX 函数:

=INDEX(C2:C11,6)

INDEX 公式返回第 6 名学生成绩的结果截图

√ 注意:范围 C2:C11 为分数所在区域,数字 6 用于查找第 6 名学生的考试成绩。

现在我们来做个小测试。对于公式 =INDEX(A1:C1,2),它会返回什么值?——没错,它将返回该行中第 2 个值,即出生日期

现在我们已经知道,INDEX 函数可完美适用于横向或纵向范围。但如果需要在包含多行多列的更大范围内返回某个值,又该如何操作呢?此时,需同时指定行号和列号。例如,若要在整个表格区域(而非单列)中查找 Jeff 的分数,即可在 A2 到 C11 单元格区域 中,定位到 第 6 行第 3 列 交叉处的分数,如下所示:

=INDEX(A2:C11,6,3)

INDEX 公式从表格区域中返回 Jeff 成绩的结果截图

关于 Excel 中 INDEX 函数,我们需要了解的内容:
  • INDEX 函数可同时处理垂直和水平区域。
  • 如果同时使用 row_numcolumn_num 参数,则 row_num 应置于 column_num 之前,INDEX 函数将返回两者交叉处的值。

然而,面对包含大量行列的真实数据库,手动输入确切的行号和列号显然不够便捷。这时,我们就需要结合使用 MATCH 函数。


如何在 Excel 中使用 MATCH 函数

Excel 中的 MATCH 函数返回指定项在给定范围内的位置,结果为一个数值。其语法如下:

=MATCH(lookup_value, lookup_array, [match_type])
  • lookup_value(必填)是指要在 lookup_array 中进行匹配的值。
  • lookup_array(必填)是指您希望 MATCH 函数在其中搜索的单元格区域。
  • match_type(可选):10-1.
    • 1(默认):MATCH 将查找小于或等于 lookup_value 的最大值,且 lookup_array 中的值必须按升序排列。
    • 0时,MATCH 函数将查找 lookup_valuelookup_array 中第一个完全相等的值。lookup_array 中的值可为任意顺序。(当匹配类型设为 0 时,支持使用通配符。)
    • -1时,MATCH 函数将查找大于或等于 lookup_value 的最小值,且 lookup_array 中的值必须按降序排列。

例如,若要查询 名称列表中 Vera 的位置,可以这样使用区分公式:

=MATCH("Vera",A2:A11,0)

MATCH 公式返回列表中 Vera 所在位置的结果截图

√ 注意:结果“4”表示姓名“Vera”位于列表的第 4 位。

关于 Excel 中 MATCH 函数,我们需要了解的内容:
  • MATCH 函数返回的是查找值在查找数组中的位置,而非该值本身。
  • MATCH 函数在存在重复值时返回第一个匹配项。
  • 与 INDEX 函数类似,MATCH 函数同样适用于垂直和水平区域。
  • MATCH 函数不区分大小写。
  • 如果 lookup_value 为文本形式,请用引号将其括起。
  • 如果 lookup_valuelookup_array 中未找到,将返回 #N/A 错误。

现在我们已经了解了 Excel 中 INDEX 和 MATCH 函数的基本用法,接下来就动手将这两个函数结合起来使用吧。


如何在 Excel 中组合使用 INDEX 和 MATCH

请参见以下示例,了解如何组合使用 INDEX 和 MATCH 函数:

要查找 Evelyn 的分数,且已知考试成绩位于第 3 列,可 使用 MATCH 函数自动确定行位置,无需手动计数;随后,再通过 INDEX 函数获取 该行与第 3 列交叉处的值

=INDEX(A2:C11,MATCH("Evelyn",A2:A11,0),3)

显示 Evelyn 成绩的公式及其结果的截图

由于该公式可能略显复杂,下面我们逐部分进行解析。

将 INDEX 和 MATCH 结合使用以查找 Evelyn 成绩的公式分解截图

INDEX 公式包含三个参数:

  • row_numMATCH("Evelyn",A2:A11,0)向 INDEX 提供“Evelyn”在区域 A2:A11 中的行位置,即5
  • column_num3 指定 INDEX 在数组中定位分数所用的第 3 列。
  • arrayA2:C11 指示 INDEX 函数在指定行与列的交叉处返回匹配值,该范围从 A2 到 C11. 最终,我们得到结果 90.

在上述公式中,我们使用了一个硬编码值 “Evelyn”。但在实际应用中,硬编码值并不实用——每次查询不同数据(例如另一位学生的分数)时,都需手动修改公式。此时,我们可以改用单元格引用,创建动态公式。例如,在本例中,我将 “Evelyn”替换为 F2

=INDEX(A2:C11,MATCH(F2,A2:A11,0),3)

(广告)使用 Kutools 简化查找:无需输入公式!

Kutools for Excel高级 LOOKUP工具提供了多种查找工具,轻松满足您的各类需求。无论您是要执行多条件查找、跨工作表搜索,还是一对多查询,只需几次点击,高级 LOOKUP即可大幅简化操作流程。探索这些功能,感受 高级 LOOKUP如何彻底改变您与 Excel 数据交互的方式——从此告别记忆复杂公式的烦恼!

Kutools for Excel 的 Excel 功能区中的超级查找工具截图

Kutools for Excel——通过 300 多个必备工具大幅提升 Excel 效率,让您的工作更快、更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取


INDEX 和区分公式示例

本节将介绍在不同场景下如何使用 INDEX 和 MATCH 函数以满足各种需求。


使用 INDEX 和 MATCH 实现双向查找

在前面的示例中,我们已知列号,并通过区分公式查找行号。但如果连列号也不确定呢?

在这种情况下,可通过两个 MATCH 函数实现双向查找(也称为矩阵查找):一个用于确定行号,另一个用于确定列号。例如,若要查询 Evelyn 的分数,请使用以下公式:

=INDEX(A2:C11,MATCH("Evelyn",A2:A11,0),MATCH("Score",A1:C1,0))

在 Excel 中使用 INDEX 和 MATCH 进行双向查找以获取 Evelyn 成绩的截图

此公式的运作原理:
  • 第一个区分公式在列表 A2:A11 中找到 Evelyn 的位置,并为 INDEX 提供 5 作为行号。
  • 第二个区分公式用于确定成绩所在的列,并返回 3 作为 INDEX 函数的列号。
  • 该公式简化为 =INDEX(A2:C11,5,3),INDEX 函数返回 90.

使用 INDEX 和 MATCH 实现向左查找

现在,假设您需要确定 Evelyn 所在的班级。您可能注意到,“班级”列位于“姓名”列的左侧,这种情况超出了另一强大 Excel 查找函数 VLOOKUP 的能力范围。

事实上,能够向左查找正是 INDEX 与 MATCH 组合优于 VLOOKUP 的一大优势。

要查找 Evelyn 的班级,请使用以下公式:在 B2:B11 中搜索 Evelyn,并 从 A2:A11 中检索对应的值

=INDEX(A2:A11,MATCH("Evelyn",B2:B11,0))

在 Excel 中使用 INDEX 和 MATCH 从左侧进行查找以获取 Evelyn 班级的截图

注意:您可以使用从右到左查找功能,轻松实现特定值的向左查找,只需几次点击即可。要使用此功能,请转到 Excel 中的 Kutools for Excel 选项卡,然后单击公式组中的 Kutools > 高级 LOOKUP > 从右到左查找

Kutools for Excel 中“从右向左查找”功能的截图

Kutools for Excel——通过 300 多个必备工具大幅提升 Excel 效率,让您的工作更快更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取


使用 INDEX 和 MATCH 实现区分大小写的查找

MATCH 函数本身不区分大小写。但当您需要公式区分大小写字母时,可结合 EXACT 函数来增强功能。将 MATCH 与 EXACT 融入 INDEX 公式中,即可轻松实现区分大小写的精准查找,如下所示:

=INDEX(array, MATCH(TRUE, EXACT(lookup_value, lookup_array), 0))
  • array 指您希望从中返回值的区域。
  • lookup_value 是指要在 lookup_array 中进行匹配的值(区分大小写)。
  • lookup_array 是指您希望 MATCH 用来与 lookup_value 进行比较的单元格区域。

例如,若要查询 JIMMY 的考试成绩,请使用以下公式:

=INDEX(C2:C11,MATCH(TRUE,EXACT("JIMMY",A2:A11),0))

√ 注意:这是一个数组公式,需按 Ctrl+Shift+Enter 输入(Excel 365、Excel 2021 及更新版本除外)。

在 Excel 中结合使用 INDEX、MATCH 和 EXACT 函数进行区分大小写的查找的截图

此公式的运作原理:
  • EXACT 函数将 "JIMMY"与列表 A2:A11 中的值进行比较,并区分大小写:若两个字符串完全一致(包括大小写),则返回 TRUE;否则返回 FALSE。因此,最终生成一个由 TRUE 和 FALSE 值组成的数组
  • 随后,MATCH 函数会检索该数组中 第一个 TRUE 值的位置,结果应为 10.
  • 最后,INDEX 会根据 MATCH 提供的第 10 个位置,从数组中检索对应的值。

注意:

  • 请务必正确输入公式:若您使用的是 Excel 365Excel 2021 或更新版本,只需按 Enter 否则,请按 Ctrl + Shift + Enter
  • 上述公式在单个列表 C2:C11 中搜索。若要在包含多列多行的区域(例如 )A2:C11)中搜索,则需同时为 INDEX 函数提供列号和设定的行数:
  • =INDEX(A2:C11,MATCH(TRUE,EXACT("JIMMY",A2:A11),0),3)
  • 在此修订后的公式中,我们使用 MATCH 函数在区域 A2:A11 中区分大小写地搜索 "JIMMY",找到匹配项后,从区域 A2:C11 的第 3 列中检索对应值。

使用 INDEX 和 MATCH 查找最接近的匹配项

在 Excel 中,您可能会遇到需要在数据集中查找最接近某个特定值的情况。此时,结合使用 INDEX 和 MATCH 函数,并辅以 ABS 和 MIN 函数,将非常有帮助。

=INDEX(array, MATCH(MIN(ABS(lookup_array - lookup_value)), ABS(lookup_array - lookup_value),0))
  • array 指您希望从中返回值的区域。
  • lookup_array 是指您希望在其中查找与 lookup_value 最接近匹配项的值区域。
  • lookup_value 是指要查找其最接近匹配项的值。

例如,若要找出 谁的分数最接近 85,请使用以下公式:在 C2:C11 中搜索最接近 85 的分数,并 从 A2:A11 中检索对应的值

=INDEX(A2:A11,MATCH(MIN(ABS(C2:C11-85)),ABS(C2:C11-85),0))

√ 注意:这是一个数组公式,需按 Ctrl+Shift+Enter 输入,Excel 365、Excel 2021 及更新版本除外。

在 Excel 中结合使用 INDEX、MATCH、ABS 和 MIN 函数查找最接近匹配项的截图

此公式的运作原理:
  • ABS(C2:C 11-85) 可计算区域 C2:C11 中每个数值与 85 的绝对差值,从而生成一个绝对差值数组。
  • MIN(ABS(C2:C 11-85)) 可在绝对差值数组中找出最小值,该值即为与 85 最接近的差值。
  • MATCH(MIN(ABS(C2:C 11-85)),ABS(C2:C 11-85),0) 函数随后在绝对差值数组中查找最小绝对差值的位置,该位置应为 10.
  • 最后,INDEX 从列表 A2:A11 中检索对应于 C2:C11 范围内最接近 85 分的值。

注意:

  • 请务必正确输入公式:在 Excel 365Excel 2021 或更新版本中,只需按 Enter 否则,请按 Ctrl + Shift + Enter
  • 若出现并列情况,此公式将返回第一个匹配项。
  • 要查找最接近平均分的匹配项,请将公式中的 85 替换为 AVERAGE(C2:C11)

使用 INDEX 和 MATCH 实现多条件查找

若要查找满足多个条件的值(即需跨两列或多列进行搜索),请使用以下公式。该公式允许您通过在不同列中指定多个条件,执行多条件查找,从而找到满足所有指定条件的目标值。

=INDEX(array, MATCH(1, (lookup_value 1=lookup_array 1) * (lookup_value 2=lookup_array 2) * (…), 0))

√ 注意:这是一个数组公式,需按 Ctrl+Shift+Enter 输入,此时编辑栏中将显示一对花括号。

  • array 指您希望从中返回值的区域。
  • (lookup_value=lookup_array)表示一个单一条件,用于检查特定的 lookup_value 是否与 lookup_array 中的值匹配。

例如,若要查找 出生日期为 7/2/2008 的 A 班学生 Coco 的分数,可使用以下公式:

=INDEX(D2:D11,MATCH(1,(G2=A2:A11)*(G3=B2:B11)*(G4=C2:C11),0))

在 Excel 中使用 INDEX 和 MATCH 进行多条件查找的截图

注意:

  • 本公式避免硬编码值,只需修改单元格 G2G3G4 中的数值,即可轻松获取不同信息对应的分数。
  • 除 Excel 365、Excel 2021 或更新版本外,您需通过按 Ctrl + Shift + Enter 输入公式此时只需按Enter 如果您经常忘记使用
    Ctrl + Shift + Enter 完成公式,导致结果出错,请改用以下稍复杂的公式——只需按Enter 键即可轻松完成:=INDEX(D2:D11,MATCH(1,INDEX((G2=A2:A11)*(G3=B2:B11)*(G4=C2:C11),0,1),0))
    
    
  • 这些公式较为复杂且难以记忆。为简化多条件查找,无需手动输入繁琐公式,请立即体验 Kutools for ExcelLookup 多条件查找功能!安装 Kutools 后,请切换至 Excel 中的 Kutools 选项卡,然后单击 高级 LOOKUP > Lookup 多条件查找(位于)公式组中)。Kutools for Excel 中“多条件查找”功能的截图

    Kutools for Excel——通过 300 多个必备工具大幅提升 Excel 效率,让您的工作更快、更轻松,并借助 AI 功能实现更智能的数据处理与高效办公!立即获取


使用 INDEX 和 MATCH 实现跨多列查找

设想一种场景:您正在处理多个数据列,其中第一列为键值,用于对其他列中的数据进行分类。要确定某条记录所属的类别或分类,您需要在数据列中进行搜索,并将其与参考列中的相应键值关联起来。

例如,在下表中,我们如何使用 INDEX 和 MATCH 函数将学生 Shawn 与其对应的班级匹配?虽然可以通过公式实现,但该公式相当冗长,不仅难以理解,更不用说记忆和输入了。

=IFERROR(INDEX($A$2:$A$4,MATCH(IF(SUM(MMULT(--($B$2:$E$4=G2),TRANSPOSE(COLUMN($B$2:$E$4)^0)))>0,1,-1),MMULT(--($B$2:$E$4=G2),TRANSPOSE(COLUMN($B$2:$E$4)^0))^0,0)), "")

跨多列应用查找的公式截图

这时,Kutools for Excel索引并匹配多列功能就派上用场了!它能简化整个流程,让您快速、轻松地将特定条目与其对应类别精准匹配。要立即解锁这一强大工具,并轻松将 Shawn 与其班级匹配,请 下载并安装 Kutools for Excel 加载项,然后按以下步骤操作:

  1. 请选择用于显示匹配班级的目标单元格。
  2. Kutools 选项卡中,单击公式助手 > 查找和引用 > 索引并匹配多列
  3. Excel Kutools 选项卡中“多列 INDEX 和 MATCH”选项的截图
  4. 在弹出的对话框中,按如下操作:
    1. 单击 Lookup_col 旁的 1st 公式助手对话框中的区域选择按钮截图按钮,选择包含要返回的关键信息(即班级名称)的列。(此处仅可选择单列。)
    2. 单击 Table_rng 旁的 2nd 公式助手对话框中的区域选择按钮截图按钮(位于此处),选择用于匹配所选 Lookup_col 中值(即学生姓名)的单元格。
    3. 单击位于 Lookup_value 旁的 3rd 公式助手对话框中的区域选择按钮截图按钮,选择包含要匹配其班级的学生姓名(本例中为 Shawn)的单元格。
    4. 单击确定
    5. 公式助手对话框截图

结果

Kutools 已自动生成公式,您会立即在目标单元格中看到 Shawn 的班级名称。

Kutools 生成的公式从表格中定位 Shawn 所在班级名称的截图

注意:要试用索引并匹配多列功能,您需要在计算机上安装 Kutools for Excel。如尚未安装,请立即下载并安装,让 Excel 今天就变得更智能!


使用 INDEX 和 MATCH 查找首个非空值

若要从一列或一行中提取首个非空值(忽略错误值),可使用基于 INDEX 和 MATCH 函数的公式;若您不希望忽略范围内的错误值,则需结合 ISBLANK 函数。

  • 忽略错误,获取列或行中的第一个非空值:
  • =INDEX(B4:B15,MATCH(TRUE,INDEX((B4:B15<>0),0),0))
  • 包含错误,获取列或行中的第一个非空值:
  • =INDEX(B4:B15,MATCH(FALSE,ISBLANK(B4:B15),0))

    用于查找第一个非空值的 INDEX MATCH 公式截图

注意:

  • 上述均为数组公式,在 Excel 365、Excel 2021 及更新版本之外,需通过按 Ctrl+Shift+Enter 输入。
  • 查看本教程以获取详细说明:获取列或行中的第一个非空值

使用 INDEX 和 MATCH 查找首个数值

若要从一列或一行中检索首个数值,请使用基于 INDEX、MATCH 和 ISNUMBER 函数的公式。

=INDEX(B4:B15,MATCH(TRUE,ISNUMBER(B4:B15),0))

用于查找第一个数值的 INDEX MATCH 公式截图

注意:

  • 这是一个数组公式,需按 Ctrl+Shift+Enter 输入(Excel 365、Excel 2021 及更新版本除外)。
  • 查看本教程以获取详细说明:获取列或行中的第一个数值

使用 INDEX 和 MATCH 查找最大值或最小值对应的关联项

如果需要检索与范围内最大值或最小值相关联的值,可以结合使用 MAX 或 MIN 函数以及 INDEX 和 MATCH 函数。

  • 使用 INDEX 和 MATCH 检索与最大值关联的值:
  • =INDEX(array, MATCH(MAX(lookup_array), lookup_array, 0))
  • 使用 INDEX 和 MATCH 检索与最小值关联的值:
  • =INDEX(array, MATCH(MIN(lookup_array), lookup_array, 0))
  • 上述公式包含两个参数:
    • array 指您希望从中返回相关信息的数据区域。
    • lookup_array 表示用于检查或搜索特定条件(例如最大值或最小值)的值集合。

例如,如果您想确定谁的分数最高,请使用以下公式:

=INDEX(A2:A11,MATCH(MAX(C2:C11),C2:C11,0))

用于查找最大值关联项的 INDEX MATCH 公式截图

此公式的运作原理:
  • 在区域 C2:C11 中,MAX(C2:C11) 可查找最高值,该值为 96.
  • 随后,MATCH 函数在数组 C2:C11 中查找最高值的位置,结果应为 1.
  • 最后,INDEX 从列表 A2:A11 中检索第 1 个值。

注意:

  • 如果存在多个最大值或最小值(如上例中两名学生取得相同最高分),此公式将返回第一个匹配项。
  • 要确定谁的分数最低,请使用以下公式:
    =INDEX(A2:A11,MATCH(MIN(C2:C11),C2:C11,0))

提示:自定义您的#N/A 错误消息

使用 Excel 的 INDEX 和 MATCH 函数时,若无匹配结果,可能会遇到 #N/A 错误。例如,在下表中,当尝试查找名为 Samantha 的学生的分数时,由于她不在数据集中,因此会出现 #N/A 错误。

INDEX MATCH 公式返回的 #N/A 错误结果截图

为提升电子表格的用户友好性,您可以通过 IFNA 函数包裹您的 INDEX 区分公式来自定义此错误提示信息:

=IFNA(INDEX(C2:C11,MATCH(F2,A2:A11,0)),"Not found")

使用 INDEX 和 MATCH 将 #N/A 错误替换为自定义消息的截图

注意:

  • 您可将“未找到”替换为您指定的任意文本,轻松自定义错误提示信息。
  • 如果您希望处理所有错误而不仅仅是 #N/A,请考虑使用 IFERROR 函数,而非 IFNA
    =IFERROR(INDEX(C2:C11,MATCH(F2,A2:A11,0)),"Not found")

    请注意,抑制所有错误可能并不可取,因为它们可作为公式中潜在问题的警示。

以上是 Excel 中 INDEX 和 MATCH 函数的全部相关内容,希望本教程对您有所帮助!如需探索更多 Excel 使用技巧,请点击此处,立即访问我们涵盖数千篇实用教程的丰富资源库,轻松提升工作效率!