使用 INDEX-MATCH-MATCH 进行双向查找
查找行匹配项与列匹配项交叉位置的值
使用 INDEX-MATCH-MATCH 进行双向查找 是 CoddyKit 上的免费 Excel Formulas Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Excel Formulas Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Excel Formulas Academy 课程共包含 4 节课。
双向查找问题
想象一个按月份排列的销售网格:左侧向下列出地区,顶部横向列出月份。您想要找到某个地区与某个月份交汇处的数字。
普通查找只能沿一个方向搜索值。双向查找会同时沿两个方向搜索:找到正确的行和正确的列,然后返回它们交汇处的值。
实现这一目的的经典工具,是将 INDEX 与两个 MATCH 调用结合起来,通常写作 INDEX-MATCH-MATCH。
回顾:INDEX 的作用
INDEX 根据位置从区域中返回一个值。完整形式是 INDEX(array, row_num, column_num)。
向它提供一个单元格区域、一个行号和一个列号,它就会返回对应位置的值。例如,在从 B2 开始的网格中,指定第 3 行和第 2 列,会返回该区域内部向下 3 行、向右 2 列处的值。
关键概念是:INDEX 需要的是位置,而不是标签。这正是 MATCH 所提供的信息。
=INDEX(B2:E5, 3, 2)回顾:MATCH 的作用
MATCH 可以在单行或单列中找到某个值的位置。其形式是 MATCH(lookup_value, lookup_array, match_type)。
将匹配类型设为 0,即可进行精确匹配。返回结果是一个数字,表示该值所在的位置,位置编号从 1 开始。
如果 "East" 是区域 A2:A5 中的第二项,那么 MATCH 会返回 2。这个 2 可以作为 INDEX 的行号。
=MATCH("East", A2:A5, 0)两个 MATCH 的思路
进行双向查找时,需要运行两次 MATCH:
- 一个 MATCH 用于查找地区所在的行。
- 另一个 MATCH 用于查找月份所在的列。
然后将这两个数字传给 INDEX。用于查找行的 MATCH 搜索垂直的标签区域;用于查找列的 MATCH 搜索水平的标题区域。
结果就是该行与该列交汇处的单个单元格。
设置网格
请想象下面这种布局。地区标签位于 A2:A5(East、West、North、South)。月份标题位于 B1:D1(Jan、Feb、Mar)。实际销售数字填充在 B2:D5 中。
两个输入单元格控制查找过程:G1 存放您要查找的地区,G2 存放您要查找的月份。
我们的目标是:使用一个公式读取 G1 和 G2,并从 B2:D5 返回匹配的销售额。
构建行 MATCH
首先定位地区。MATCH 会在垂直标签列表 A2:A5 中查找 G1 里输入的值。
如果 G1 包含 "North",而 North 是第三个标签,那么这个 MATCH 会返回 3。
这个数字会告诉 INDEX 应读取数据区域中的哪一行。请注意,我们搜索的是 A2:A5,也就是仅搜索标签,而不是数据,因此位置 3 会与第三个数据行对齐。
=MATCH(G1, A2:A5, 0)构建列 MATCH
接下来定位月份。这个 MATCH 会在水平标题行 B1:D1 中查找 G2 里的值。
如果 G2 包含 "Feb",而 Feb 是第二个标题,那么 MATCH 会返回 2。
这个数字会成为 INDEX 的列位置。与行查找一样,我们只搜索标题 B1:D1,这样位置就会与 B2:D5 中的数据列对齐。
=MATCH(G2, B1:D1, 0)整合所有部分
现在将两个 MATCH 调用嵌套在 INDEX 中。数据区域 B2:D5 是数组,行 MATCH 提供行号,列 MATCH 提供列号。
当 G1 为 "North" 且 G2 为 "Feb" 时,行 MATCH 返回 3,列 MATCH 返回 2,因此 INDEX 会返回 B2:D5 中第 3 行、第 2 列位置的值。
这个公式就是完整的双向查找。
=INDEX(B2:D5, MATCH(G1, A2:A5, 0), MATCH(G2, B1:D1, 0))逐步分析计算过程
假设 B2:D5 中存放着以下数据:North 这一行分别是 1 月 50、2 月 80、3 月 65。
- MATCH("North", A2:A5, 0) 返回 3。
- MATCH("Feb", B1:D1, 0) 返回 2。
- INDEX(B2:D5, 3, 2) 读取第 3 行、第 2 列,返回 80。
将 G1 改为 "East",或将 G2 改为 "Mar",整个公式都会立即重新计算。这就是通过两个 MATCH 查找驱动 INDEX 的强大之处。
为什么不直接使用 VLOOKUP
VLOOKUP 只能搜索第一列,并返回右侧固定列数处的值。要切换月份,您必须自行将列索引硬编码或计算出来。
INDEX-MATCH-MATCH 可以根据标签动态选择行和列。即使重新排列列或插入新月份,公式仍然有效,因为它匹配的是标题文本,而不是固定的列数。
避免区域错位
最常见的错误是区域不匹配。行 MATCH 区域的高度必须与 INDEX 数据块相同,列 MATCH 区域的宽度也必须相同。
这里 A2:A5 的高度为 4 行,B2:D5 的高度也为 4 行,因此 MATCH 返回 3 确实表示第 3 个数据行。如果您不小心搜索 A1:A5(其中包含标题),位置就会偏移一行,从而得到错误的单元格。
=INDEX(B2:D5, MATCH(G1, A2:A5, 0), MATCH(G2, B1:D1, 0))快速检查
测试您对双向查找模式的理解。
课程回顾
您学会了双向查找模式:
- INDEX 根据数据块中的行位置和列位置返回值。
- 第一个 MATCH 通过搜索垂直标签来查找行。
- 第二个 MATCH 通过搜索水平标题来查找列。
组合公式 =INDEX(data, MATCH(row), MATCH(col)) 读取两个输入,并返回它们交叉位置处的值。请确保 MATCH 区域与数据块大小相同,以避免错位。
=INDEX(B2:D5, MATCH(G1, A2:A5, 0), MATCH(G2, B1:D1, 0))常见问题解答
「使用 INDEX-MATCH-MATCH 进行双向查找」课时是免费的吗?
是的 — 「使用 INDEX-MATCH-MATCH 进行双向查找」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Excel Formulas Academy 课程的其余内容,请升级到 CoddyKit PRO。 Excel Formulas Academy 课程共包含 4 节课。
「使用 INDEX-MATCH-MATCH 进行双向查找」这节课中我会学到什么?
查找行匹配项与列匹配项交叉位置的值 你通过在浏览器中直接运行的动手代码来练习 Excel Formulas Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Excel Formulas Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Excel Formulas Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「使用 INDEX-MATCH-MATCH 进行双向查找」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Excel Formulas Academy 课中编写并运行代码吗?
能。每节 Excel Formulas Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 使用 INDEX-MATCH-MATCH 进行双向查找
- 查找最后一个匹配值
- 使用 INDEX-MATCH 进行多条件查找
- 等级表中的近似匹配