VLOOKUP是一个超级好用的函数,不过有点遗憾就是重名的时候,VLOOKUP函数查找会导致出错。这个问题学员提了好几次,以前都是大概提一下解决方案。今天,卢子详细说明。
工资表,姓名中的卢子和Excel不加班两个人是重复出现的。
查询表,重名的情况下,只查找到姓名第一次出现的工资,另一个没法查找到。
解决方案1:根据姓名或者工号查找,普通人直接按姓名查找,重名的人用工号查找。
使用公式:
=IFERROR(VLOOKUP(A2,工资表!B:F,5,0),VLOOKUP(A2,工资表!A:F,6,0))
先借助VLOOKUP函数查找姓名,如果有对应值就返回工资,如果没有对应值再根据工号进行查找。
为什么这里要同时用姓名跟工号两个条件呢?
因为很多人都习惯用姓名,工号记不住,而重名的人没办法只能退而求其次用工号。
解决方案2:有的时候工资表没有工号,但有身份证或者手机号等可以区分人的信息,这时也可以调用。如重名的人根据姓名和身份证后6位进行查找工资,普通人直接根据姓名查找工资。
使用公式:
=IFERROR(LOOKUP(1,0/((A2=工资表!$B$2:$B$14)*(B2=RIGHT(工资表!$E$2:$E$14,6))),工资表!$F$2:$F$14),VLOOKUP(A2,工资表!B:F,5,0))
LOOKUP函数语法:
=LOOKUP(1,0/((查找值1=查找区域1)*(查找值2=查找区域2)),返回区域)
这里的1和0为固定的,暂时可以不用管,重点看红色字体部分,这部分是需要根据实际而变。
查找区域可以嵌套其他函数,比如RIGHT(工资表!$E$2:$E$14,6),就是提取身份证后6位。
整个公式的意思就是,先同时按姓名和后6位身份证进行查找,如果找不到就单独根据姓名查找。
来源:Excel不加班,作者:卢子