INDEX+MATCH--真正的查询之王:反向查找、多条件合并查找、双向查找轻松搞定
查找数据,大家首先想到的是VLOOKUP函数。
但是VLOOKUP有一个「耿直」的要求——查找值必须在表格 首列 。不满足这个条件,就没办法用VLOOKUP。
比如,上面这张表,我们只能用VLOOKUP根据工号匹配姓名,却不能反向根据姓名匹配工号。
如果一旦我们的表格不满足这个条件,查找值在右侧,而要匹配的目标值在左侧,怎么进行匹配呢?
今天给大家介绍一对黄金组合——INDEX+MATCH,不但可以正向查找,反向查找也易如反掌。
MATCH函数可以根据元素返回元素在列表中的位置,而INDEX是一个索引函数,它有两种用法:
- 指定列表和序号,返回对应位置的元素
- 指定表格以及行号、列号,返回对应位置的元素
01 反向查找
在工资表中按照"姓名"查"工号"——
INDEX(A2:A8,MATCH(A11,B2:B8,0))
其中,
MATCH(A11,B2:B8,0)
查找姓名(A11)在姓名列(B2:B8)的位置 INDEX(A2:A8,MATCH(A11,B2:B8,0)) 根据位置返回工号列(A2:A8)对应的工号
02 多条件查找
在工资表中按照"部门"和"职务"查"姓名"——
{=IFERROR(INDEX(B2:B8,MATCH(A11&B11,D2:D8&E2:E8,0)),"查无此人")}
MATCH(A11&B11,D2:D8&E2:E8,0)
MATCH的第二个参数支持合并后数组,所以将查找条件合并后进行合并查找
INDEX(B2:B8,MATCH(A11&B11,D2:D8&E2:E8,0))
查找到后再用INDEX从姓名列取对应的值
IFERROR(INDEX(B2:B8,MATCH(A11&B11,D2:D8&E2:E8,0)),"查无此人")
错误值处理:查不到时提示"查无此人"
{=IFERROR(INDEX(B2:B8,MATCH(A11&B11,D2:D8&E2:E8,0)),"查无此人")}
公式中含有数组运算,所以公式需要按Ctrl+Shift+Enter三键完成输入
03 双向查找
查找每个人的"基本工资","实发工资"等工资项——
INDEX(A1:L8,MATCH(A11,B1:B8,0),MATCH(B11,A1:L1,0))
MATCH(A11,B1:B8,0) 查姓名(A11)在工资表(B1:B8)中的行的位置
MATCH(B11,A1:L1,0) 查工资项(B11)在工资表中所在列的位置
INDEX(A1:L8,MATCH(A11,B1:B8,0),MATCH(B11,A1:L1,0)) 根据上面的行、列位置取值
以上就是关于INDEX+MATCH两个函数搭配的使用方法,可以说太横了。相比VLOOKUP,他们才是真正的查询之王!
本文首发于公众号 张老师办公室
如需转载,请联系微信:BGJenny
升值邦VIP+线上合伙人限量招募
只需投入199元
一边学习成长,一边开启副业收入