0Pricing
Excel Formulas Academy · 课时

组合使用 INDEX 和 MATCH

使用 MATCH 将位置传递给 INDEX,实现动态查找

组合使用 INDEX 和 MATCH 是 CoddyKit 上的免费 Excel Formulas Academy 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Excel Formulas Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Excel Formulas Academy 课程共包含 4 节课。

完美搭配

现在,您已经掌握了查找的两个部分。MATCH 查找值所在的位置,而 INDEX 返回某个位置上的值。

将它们组合起来,就能完成一次完整的查找:MATCH 定位行,然后 INDEX 从该行中提取您选择的任意列的数据。

看到这个模式后,您就会发现它很简单:将 MATCH 放在 INDEX内部,也就是通常填写行号的位置。

核心模式

下面是您会反复使用的形式:

=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))

请从内向外阅读。MATCH 先运行并返回一个位置编号。这个数字随后会成为 INDEX 的行号,INDEX 再从返回范围中返回相应的值。

返回范围和查找范围通常包含相同数量的行,因此一个范围中的位置可以与另一个范围中的位置对应起来。

=INDEX(C2:C20, MATCH("Cherry", A2:A20, 0))

分步示例

假设有一个表格,A 列存放产品名称,C 列存放价格。您想查找“樱桃”的价格。

首先,MATCH 查找樱桃:=MATCH("Cherry", A2:A20, 0),假设返回 3。

然后,INDEX 使用这个 3:=INDEX(C2:C20, 3) 会返回 C 列第 3 行中的价格。

将它们嵌套起来,就可以一步完成:=INDEX(C2:C20, MATCH("Cherry", A2:A20, 0))。

=INDEX(C2:C20, MATCH("Cherry", A2:A20, 0))

使用单元格作为查找值

将“樱桃”直接写入公式对于学习来说没有问题,但实际公式通常会引用单元格。请将搜索词放入 E1,然后引用它。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

现在,无论您在 E1 中输入什么产品,公式都会立即返回对应的价格。输入香蕉,就会得到香蕉的价格;输入椰枣,答案也会随之更新。

一个公式就变成了完全由输入单元格驱动的可复用查找工具。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

向左查找

这正是 INDEX-MATCH 的特别之处。查找列和返回列彼此独立,因此返回的值可以位于您搜索的值的左侧。

假设价格位于 A 列,产品名称位于 C 列。要按名称查找产品价格,请写入 =INDEX(A2:A20, MATCH(E1, C2:C20, 0))。

您搜索的是 C 列,但返回的是 A 列。VLOOKUP 如果没有辅助方式就无法做到这一点。

=INDEX(A2:A20, MATCH(E1, C2:C20, 0))

返回不同字段

返回范围决定您得到的内容。使用相同的键进行搜索时,只需更改 INDEX 范围,就可以提取任意列。

查找客户的电子邮件地址:=INDEX(D2:D50, MATCH(E1, A2:A50, 0))。

要改为查找同一客户所在的城市:=INDEX(F2:F50, MATCH(E1, A2:A50, 0))。

MATCH 部分保持不变;只有 INDEX 范围会改变,以选择不同的结果。

=INDEX(F2:F50, MATCH(E1, A2:A50, 0))

双向查找预览

您还可以向 INDEX 提供列号,这个列号可通过第二个 MATCH 找到。这样即可定位行与列交叉处的值。

=INDEX(B2:E10, MATCH(G1, A2:A10, 0), MATCH(G2, B1:E1, 0))

第一个 MATCH 根据 A 列中的标签找到行,第二个根据第 1 行中的标题找到列。INDEX 返回两者交叉处的单元格。稍后将深入讲解这种高级模式。

=INDEX(B2:E10, MATCH(G1, A2:A10, 0), MATCH(G2, B1:E1, 0))

保持范围对齐

为了让位置保持对应,查找范围和返回范围必须从同一行开始,并且高度相同。

如果 MATCH 搜索 A2:A20(19 行),而 INDEX 从 C2:C19(18 行)返回结果,位置就会错开,您得到的答案也会错误。

一个可靠的习惯是:对两者使用完全相同的行范围,例如 A2:A20 和 C2:C20。A:A 和 C:C 这样的整列引用也会自动保持对齐。

=INDEX(C:C, MATCH(E1, A:A, 0))

处理未找到的匹配

如果 MATCH 找不到查找值,就会返回 #N/A,整个 INDEX-MATCH 也会显示该错误。将其包装在 IFNA 中,即可提供简洁的后备结果。

=IFNA(INDEX(C2:C20, MATCH(E1, A2:A20, 0)), "Not found")

现在,找不到产品时会显示文本 "Not found",而不是令人困惑的错误。IFERROR 也可以使用,但 IFNA 只针对未找到的情况,并会让其他错误继续显示。

=IFNA(INDEX(C2:C20, MATCH(E1, A2:A20, 0)), "Not found")

完整的实际公式

现在把所有内容组合起来。您有一个员工表:A 列是 ID,B 列是姓名,C 列是部门,D 列是薪资。用户会在 G1 中输入一个 ID。

要返回该员工的部门:=INDEX(C2:C200, MATCH(G1, A2:A200, 0))。

如果要返回薪资,只需将 INDEX 范围改为 D2:D200。查找逻辑始终不变,只有读取数据的列会改变。这是日常动态查找中最常用的工具。

=INDEX(D2:D200, MATCH(G1, A2:A200, 0))

为什么从内向外阅读很有帮助

当公式看起来令人望而生畏时,请按照电子表格的计算方式,从最内层函数开始向外计算。

对于 =INDEX(C2:C20, MATCH(E1, A2:A20, 0)):先阅读 MATCH(E1, A2:A20, 0),设想它返回一个类似 5 的数字,然后在脑中将其替换为 =INDEX(C2:C20, 5)。

这样一来,公式突然就变成了“返回第 5 个价格”。养成这个习惯后,任何嵌套查找都很容易调试。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

快速检查

请确认您理解这两个函数是如何组合的。

回顾:INDEX + MATCH

您将两个函数组合成了灵活的查找公式:

  • 模式:=INDEX(return_range, MATCH(lookup_value, lookup_range, 0))
  • MATCH 找到行位置;INDEX 返回该位置的值
  • 查找列和返回列彼此独立,因此向左侧查找和向右侧查找一样容易
  • 让两个范围保持相同高度,并使用 IFNA 进行简洁的错误处理

接下来,看看这种方法为什么通常优于 VLOOKUP。

=INDEX(C2:C20, MATCH(E1, A2:A20, 0))

常见问题解答

「组合使用 INDEX 和 MATCH」课时是免费的吗?

是的 — 「组合使用 INDEX 和 MATCH」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Excel Formulas Academy 课程的其余内容,请升级到 CoddyKit PRO。 Excel Formulas Academy 课程共包含 4 节课。

「组合使用 INDEX 和 MATCH」这节课中我会学到什么?

使用 MATCH 将位置传递给 INDEX,实现动态查找 你通过在浏览器中直接运行的动手代码来练习 Excel Formulas Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Excel Formulas Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Excel Formulas Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「组合使用 INDEX 和 MATCH」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Excel Formulas Academy 课中编写并运行代码吗?

能。每节 Excel Formulas Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 使用 INDEX 提取数值
  2. 使用 MATCH 查找位置
  3. 组合使用 INDEX 和 MATCH
  4. 为什么 INDEX-MATCH 优于 VLOOKUP
← 返回 Excel Formulas Academy