Excel Formulas Academy · 课时

使用 INDEX-MATCH 进行多条件查找

同时匹配多列以精确定位某一行

第 3 / 4 课13 个步骤

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

一个键不够用时

有时,单列无法唯一标识一行。您可能需要查找特定尺码产品的价格,或特定部门员工的薪资。

这就需要使用多条件查找:同时匹配两列或更多列,以精确定位某一行。

INDEX-MATCH 可以将多个条件组合成一个匹配测试,优雅地完成这项工作,无需额外的辅助列。

使用辅助列的方法

最简单的理解方式是将关键列合并为一列。添加一个辅助列,将产品和尺码拼接起来,然后对其执行普通查找。

例如,某个辅助单元格可以包含 =A2&"|"&B2,生成 "Shirt|Large"。然后,您可以在该合并列中 MATCH "Shirt|Large"。

这种方法可行,但会使工作表变得杂乱。接下来的内容将展示如何完全跳过辅助列。

=A2 & "|" & B2

同时匹配两个条件

核心技巧是:在 MATCH 内部将两个条件测试相乘。

(A2:A10=G1) 会为第一个条件生成 TRUE/FALSE 数组。(B2:B10=G2) 会为第二个条件执行相同操作。将它们相乘,即 (A2:A10=G1)*(B2:B10=G2),只有在两个条件都为 TRUE 的位置生成 1,其他位置生成 0。

然后,MATCH 搜索数值 1,以找到同时满足两个条件的行。

=(A2:A10=G1) * (B2:B10=G2)

为什么相乘表示 AND

在电子表格中,TRUE 的行为类似于 1,FALSE 的行为类似于 0。将两个值相乘可以模拟逻辑 AND:

  • 1 乘以 1 = 1(两个条件都满足)
  • 1 乘以 0 = 0
  • 0 乘以 1 = 0
  • 0 乘以 0 = 0

因此,只有两个条件都成立的行才会生成 1。其他每一行都会变成 0。这个唯一的 1 就标记了我们要查找的行。

使用 MATCH 查找行

现在,将相乘后的数组放入 MATCH 中,搜索精确值 1。

MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0) 会返回两个条件都为 TRUE 的第一行的位置。

如果匹配组合位于第 4 个数据行,MATCH 就会返回 4。这个位置正是 INDEX 获取答案所需要的。

=MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0)

使用 INDEX 返回值

将 MATCH 的结果传给覆盖您实际需要的列的 INDEX,例如 C2:C10 中的价格列。

完整公式的含义是:从 C2:C10 中返回产品等于 G1 且尺码等于 G2 的行所对应的值。

这是一个真正的多条件查找,无需辅助列,也无需重新排列数据。

=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))

正确输入公式

此公式会计算条件数组。在现代 Excel 和 Google Sheets 中,您只需按 Enter,公式即可运行。

在旧版 Excel(动态数组推出之前)中,您必须使用 Ctrl+Shift+Enter 将其确认为数组公式,系统会添加花括号。如果您在旧版 Excel 中得到错误结果或显示错误,通常就是缺少这一步确认。

=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))

添加第三个条件

需要三个条件吗?只需再乘以一个测试条件。假设您还想将 D 列中的颜色与输入值 G3 进行匹配。

每增加一个 (range=criterion) 因子,结果就会进一步缩小。只有所有条件都为 TRUE 的行才能保持乘积为 1;任何一个 FALSE 都会使整个乘积变为 0。

无论您需要多少列,这种模式都可以扩展。

=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2)*(D2:D10=G3), 0))

完整示例

数据:A = 产品,B = 尺码,C = 价格。您想查找 "Shirt" 的 "Large" 尺码价格。

  • G1 = "Shirt",G2 = "Large"。
  • 条件数组只会在 Shirt+Large 所在行生成 1,例如第 4 行。
  • MATCH(1, ..., 0) 返回 4。
  • INDEX(C2:C10, 4) 返回该行的价格。

更改任一输入值后,公式都会立即重新找到正确的行。

=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))

问题与安全处理

请牢记以下几点:

  • 区域相同:每个条件区域和 INDEX 列必须具有相同的高度。
  • 没有匹配项:如果没有任何行满足所有条件,MATCH 会返回 #N/A。请将整个公式包装在 IFERROR 中。
  • 重复项:如果有多个匹配行,MATCH 只会返回第一个。请使条件足够具体,以确保结果唯一。
=IFERROR(INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0)), "No match")

使用 SUMPRODUCT 作为替代方法

如果可能有多行匹配,而您希望汇总它们的值,而不是只提取一行,SUMPRODUCT 是数组形式 INDEX-MATCH 的一种简洁替代方案。

它会将条件数组与数值列相乘,再将结果相加,因此只有同时满足两个条件的行才会计入结果。由于 SUMPRODUCT 原生支持数组,因此不需要按 Ctrl+Shift+Enter。

使用 INDEX-MATCH 提取单个匹配值;使用 SUMPRODUCT 汇总所有匹配项。

=SUMPRODUCT((A2:A10=G1) * (B2:B10=G2) * C2:C10)

快速检查

测试您对多条件查找的掌握情况。

课程回顾

使用 INDEX-MATCH 进行多条件查找时:

  • 将条件数组相乘:(A=G1)*(B=G2) 只会在所有条件都满足的位置得到 1(逻辑 AND)。
  • MATCH(1, ..., 0) 会找到该行的位置。
  • INDEX(returnCol, position) 会返回相应值。

如需添加更多条件,可继续增加 *(range=criterion) 因子;确保各个范围的高度一致;在旧版 Excel 中使用 Ctrl+Shift+Enter 确认,并使用 IFERROR 进行保护。

=INDEX(C2:C10, MATCH(1, (A2:A10=G1)*(B2:B10=G2), 0))
免费开始

用 AI 导师学习 Excel — 免费

在浏览器中编写并运行真实代码,获得全天候 AI 导师的即时帮助,并在网页或应用中继续学习。

课程
30
课程
120

常见问题解答

「使用 INDEX-MATCH 进行多条件查找」课时是免费的吗?

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

「使用 INDEX-MATCH 进行多条件查找」这节课中我会学到什么?

同时匹配多列以精确定位某一行 你通过在浏览器中直接运行的动手代码来练习 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-MATCH-MATCH 进行双向查找
  2. 查找最后一个匹配值
  3. 使用 INDEX-MATCH 进行多条件查找
  4. 等级表中的近似匹配
← 返回 Excel Formulas Academy