💡 文末有福利:关注「慕慕进化论」,在公众号聊天框回复「Excel」领取《Excel全攻略》合集PDF,系统自动发送,随用随查。
有一次做产品报价表,需要根据产品编号查单价。本来用VLOOKUP写得好好的,结果产品目录调整了——单价列从D列挪到了B列,产品编号从A列挪到了C列。VLOOKUP要求查找值在查找范围的第一列,现在产品编号不在第一列了,所有公式全部报错。
改了半天公式才修好,后来同事告诉我用INDEX+MATCH组合,不管列怎么挪位置,公式都不用动。试了一次就彻底转投了。
今天就彻底搞清楚INDEX+MATCH这个组合。
01 INDEX函数:定位取值
INDEX的功能很简单:在一个区域里,根据行号和列号取出对应的值。语法是=INDEX(区域, 行号, 列号)。
举个例子。A1:C5是一个3行3列的区域,=INDEX(A1:C5, 2, 3)就是取这个区域的第2行第3列的值。如果A1:C5的内容是一个表格,那这个公式返回的就是表格中第2行第3列那个单元格的值。
如果区域只有一列(比如A1:A10),可以省略列号,只写=INDEX(A1:A10, 3),就是取第3行的值。同理只有一行的话省略行号。
INDEX本身就是一个简单的"坐标取值"工具,它的关键在于行号和列号从哪来——这就是MATCH的工作了。
02 MATCH函数:查找定位
MATCH的功能也很明确:在一个区域里找到某个值,返回它的位置(第几个)。语法是=MATCH(查找值, 查找区域, 匹配方式)。
比如在A1:A10里查找"产品C",=MATCH("产品C", A1:A10, 0),如果"产品C"在第5个位置,公式返回5。第三个参数0表示精确匹配,这是最常用的设置。填1表示小于查找值的最大值(需要区域升序排列),填-1表示大于查找值的最小值(需要降序排列)。日常查找基本都是用0精确匹配。
MATCH只返回位置编号,不返回值本身。单独用意义不大,但跟INDEX配合起来就非常强大了。
03 组合起来:INDEX+MATCH的基本用法
把INDEX和MATCH套在一起,逻辑就清晰了:先用MATCH找到查找值在某一列里的位置,再用INDEX根据这个位置从另一列取出对应的值。
经典场景:根据产品编号查单价。假设A列是产品编号,D列是单价。=INDEX(D:D, MATCH(目标编号, A:A, 0))。MATCH先在A列找到目标编号是第几行,INDEX再去D列同一行取单价。
对比一下VLOOKUP:=VLOOKUP(目标编号, A:D, 4, 0)。结果一样,但INDEX+MATCH有一个关键优势——查找方向不受限。VLOOKUP只能从左往右查(查找值必须在查找范围的第一列),INDEX+MATCH没有这个限制,从右往左、从中间往两边都行。
回到开头那个场景,产品编号和单价的列位置互换了,INDEX+MATCH的公式完全不用改,因为INDEX和MATCH分别引用的是独立的列,不依赖它们的相对位置。
04 双向查找
INDEX+MATCH还能实现双向查找——同时根据行条件和列条件定位一个值。这相当于在一张二维表里,先确定在哪一行、再确定在哪一列,交叉取出结果。
假设有一个价格矩阵表,行是产品名称(A列),列是不同城市的名称(第1行),中间区域是各产品在各城市的报价。要根据产品名称和城市名查出报价:
=INDEX(B2:F20, MATCH(产品名, A2:A20, 0), MATCH(城市名, B1:F1, 0))
第一个MATCH确定行号,第二个MATCH确定列号,INDEX根据行列坐标取值。VLOOKUP要实现同样的效果,需要嵌套COLUMN函数来计算列号,写起来要复杂得多。
05 多条件查找
实际工作中经常遇到多条件查找的需求:根据产品编号和产品类型两个条件查单价。VLOOKUP处理多条件很麻烦,需要辅助列拼接,INDEX+MATCH可以更灵活。
方式一:数组公式。=INDEX(单价列, MATCH(1, (产品编号列=目标编号)*(产品类型列=目标类型), 0))。用两个条件分别做布尔判断,相乘后等于1的那行就是两个条件同时满足的行。输入完公式后按Ctrl+Shift+回车(老版本Excel需要,Microsoft 365直接回车就行)。
方式二:辅助列拼接。在数据表旁边加一列,用&符号把多个字段拼成一个,比如=A2&B2生成"编号+类型"的组合键。然后用普通的INDEX+MATCH在这个辅助列里查找拼接后的条件。这种方式更容易理解,但需要额外一列。
方式三:用XLOOKUP替代。如果用的是Microsoft 365或Excel 2021以上版本,XLOOKUP函数本身支持数组查找,语法更简洁。不过INDEX+MATCH的优势在于兼容性,老版本Excel都能用。
06 INDEX+MATCH vs VLOOKUP:怎么选
说了这么多INDEX+MATCH的优点,也不是说VLOOKUP就没用了。两者各有适用场景。
VLOOKUP的优势是简单直观,适合快速查找。数据源结构稳定、查找方向固定、不需要复杂条件的时候,VLOOKUP写起来更快,别人看公式也容易理解。
INDEX+MATCH的优势是灵活强大。需要反向查找、列位置可能变动、多条件查找、双向查找这些场景,INDEX+MATCH是更可靠的方案。而且INDEX+MATCH只引用查找列和返回列,不涉及整块区域,在处理大表格时计算效率也更高一些。
实际工作中可以根据情况灵活选择。简单的查找用VLOOKUP就行,复杂的、可能变动的查找场景用INDEX+MATCH更稳妥。两个都掌握了,查找类的需求基本就能全覆盖了。
关注「慕慕进化论」,每周一个实用办公技巧,把Excel变成真正的效率工具。

夜雨聆风