方法一 使用IF函数重新构建数组

=VLOOKUP(D2,IF({1,0},B2:B13,A2:A13),2,0)
image.png
用IF({1,0},B2:B13,A2:A13),返回一个姓名在前,工号在后的多行两列的内存数组,使其符合VLOOKUP函数的查询值处于查询区域首列的条件,再用VLOOKUP查询即可。
该函数使用比较复杂,运算效率比较低。
与之类似的还有使用CHOOSE函数重新构建数组,就是把公式中的IF({1,0},部分换成CHOOSE({1,2}

方法二 INDEX+MATCH结合。

=INDEX(A2:A13,MATCH(D2,B2:B13,0))
image.png

方法三 LOOKUP

=LOOKUP(1,0/(D2=B2:B13),A2:A13)
image.png
这是非常经典的LOOKUP用法。
首先用F2=B2:B10得到一组逻辑值,再用0除以这些逻辑值,得到由0和错误值组成的内存数组。再用1作为查询值,在内存数组中进行查询。
如果 LOOKUP 函数找不到查询值,则它与查询区域中小于或等于查询值的最大值匹配,因此是以最后一个0进行匹配,并返回A2:A10中相同位置的值。
该函数使用简便,功能强大,公式书写也比较简洁。
如果有多条符合条件的结果,前三个公式都是返回首个满足条件的值,而第四个公式则是返回最后一个满足条件的值,这一点大家在使用时还需要特别注意。

方法四

=XLOOKUP(D2,B:B,A:A)
image.png


逆向匹配.xlsx