INDEX和MATCH函数可以实现任意方向、任意位置的数据提取,并且不受VLOOKUP只能沿一维数组纵向查找以及当列顺序发生变化时就会出错的问题限制。它的工作原理是先通过MATCH找到行号和列号,然后用INDEX根据坐标从二维区域内取出数值,整个过程非常直观明了——比如在销售表格里既可以按照姓名来查询每个月份对应的销售额,也可以反过来利用销售额去查找对应的客户名称;还可以同时满足年份加季度这样的两个条件来获取特定的结果值,在此基础上还可以对表格进行插入或者删除的操作而不会影响到结果。因此它是EXCEL高手们用来处理结构化的数据的一种可靠的解决方案。

一、基本的操作流程就是用一个条件来进行查询
MATCH函数用来定位,在INDEX函数中用到的就是要获取的数据所在的位置了。比如有一个客户信息表,A列为客户的姓名,B列为客户的编号,在F2单元格里填入一个公司的名字之后就可以得到对应的编号了。操作步骤如下:在G2单元格内输入公式=INDEX(B2:B100,MATCH(F2,A2:A100,0))。其中B2:B100为目标返回区(即客户编号所在的那一列),A2:A100为查找区(即客户姓名所在的那一列),第三个参数0表示必须进行精确匹配。所有的区域起始和结束行号都要保持一致,并且最好采用绝对引用的形式来防止下拉填充的时候出现区域变化的情况发生。如果查找不到相应的数据的话,则可以使用IFERROR函数来进行处理,即写成=IFERROR( INDEX($B$2:$B$100,MATCH(F2,$A$2:$A$100,0)), "未找到" )来提高报表的容错能力。
第二部分高级用法:双向和多条件交叉查询
如果要按照“姓名+月份”的方式来二维定位销售额的话就需要用到双重的MATCH嵌套了。比如数据区域是B2:G10,行标题在A3:A10(员工姓名),列标题在B1:G1(月份),那么H3单元格的公式就是=INDEX($B$2:$G$10,MATCH(H1,$A$3:$A$10,0),MATCH(H2,$B$1:$G$1,0))。其中第一个MATCH用来找到姓名所在的那一行号,第二个MATCH用来找到月份所在的那一列号,二者一起控制着INDEX函数精确地落在哪里。注意一下行列标题区和数据区边界的对齐问题,比如说姓名范围A3:A10对应的数据行是2-10行,如果不一致的话就会导致行号计算出错一整行。老版的Excel做多重条件数组查找的时候需要用Ctrl+Shift+Enter来确认,但是在Office 365以及最新的Excel 2021里已经可以使用动态数组了,直接回车就可以完成操作了。
第三部分实用避坑指南:保证系统正常运转的重要因素
常见的错误有三种:第一种是MATCH第三个参数漏掉或者填写成1(近似匹配),造成结果出错;第二种是查找区域和返回区域行数/列数不一样,比如用A2:A50来查找但是让INDEX从C2:C40取值;第三种是没有锁定区域引用,在下拉公式的时候查找范围会逐行向下移动。解决方法是统一使用$符号固定行列,即$A$2:$A$100;所有的MATCH都要明确地加上0;在做多条件查找之前要先用COUNTIF检查查找值是否存在源数据中;另外如果需要获取一行的数据(比如提取某个客户的全部订单记录),可以把INDEX第二个参数设置为MATCH的结果,第三个参数留空或者填0,并且要用到TRANSPOSE函数把结果转置出来。
掌握INDEX和MATCH这两个函数就可以理解到EXCEL中数据查找的基本原理了,并不需要去猜测列的位置,在确定好行、列之后就很容易找到想要的数据了。






评论区 (0)
暂无评论,快来抢沙发吧!
发表评论