vlookup一遇到往左查就抓瞎,表格中间插一列公式还全体翻车。这两个毛病用index match都能绕开,思路也简单:match负责找到目标在第几行,index负责把那一行的值取出来,两个函数分工干活。
单条件查找的标准写法
=INDEX(C2:C100, MATCH(E2, A2:A100, 0))拆开看:MATCH在A列区域里找E2的位置,第三个参数0表示精确匹配,找到就返回区域内的第几个;INDEX拿这个位置去C列区域取值。注意两个区域的行数要对齐,都从第2行到第100行,错一位结果就串行了。查不到会返回#N/A,多数情况是查找值带了空格或者全半角不一致,先清理E2再试;不想看到报错,外面套一层IFERROR,把错误换成0或者空白。
比vlookup灵活在哪
- 可以往左查:查找列在返回列的右边也没关系,vlookup的查找列必须在那组区域的第一列。
- 插列不翻车:公式按区域引用,中间插入或删除列都不影响,vlookup里写死的第几列就得逐个改。
- 返回位置能复用:MATCH算出来的序号还能喂给别的函数,组合空间大。
多条件查找的数组写法
两个条件同时满足才取数,把条件相乘:
=INDEX(C2:C100, MATCH(1, (A2:A100=E2)*(B2:B100=F2), 0))两组条件各自成立算1,相乘还是1的位置就是目标行。老版本Excel输完要按Ctrl加Shift加Enter三键确认,365和2021版本直接回车就行。条件多了继续往里乘,写法不变。
日常单表查询vlookup够用,但查找方向不固定、表格经常被别人动结构的场景,直接用index match,一次写对后面省心。