excel

关注公众号 jb51net

关闭
软件教程 > 办公软件 > excel >

Excel2013在查询值不在首列时怎么完成查询?

脚本之家

我们都知道,在Excel2013里面最常用的查询函数是vlookup,比如根据员工工号查询他的考勤、工资等等,还有根据学生的考号查询他的成绩,这个最受欢迎的vlookup函数都可以一键帮我们搞定,但是vlookup函数有个致命的缺点,就是查询值必须在查询区域的首列,那么在查询值不在首列的情况怎么完成查询呢?

1.vlookup函数正向查找

为了和后面的逆向查找做个对比,我们先来看下vlookup函数的正向查找,利用工号查找姓名,

=VLOOKUP(E5,A2:B11,2,0)的意思就是以E5单元格的工号为查找值,在A2到B10的查找区域,在首列中找到与E5相同的工号,然后返回这个区域中与之对应的第2列(也就是姓名列)的姓名。这就是vlookup函数的正向查找,那么现在我想以姓名为查找值,在这个区域里查找和姓名对应的工号要怎么办呢?

Excel2013所有逆向查询的方法

2.vlookup函数的逆向查找一

逆向查找的第一种方法同样是利用vlookup函数,搭配if函数重新构建个数组来使用。这个公式的用法是利用if({1,0},B2:B11,A2:A11)返回一个姓名在前,工号在后的多行两列的内存数组,这样它就符合vlookup函数的查找值在首列的要求,可以顺利进行查找了。

Excel2013所有逆向查询的方法

3.vlookup函数的逆向查找二

vlookup函数逆向查找的第二种方法是搭配choose函数重新构建一个内存数组,choose({1,2},B2:B11,A2:A11)同样是返回一个姓名在前,工号在后的多行两列的内存数组,与if不一样的是,choose函数变成了{1,2},这点大家要注意。

Excel2013所有逆向查询的方法

4.index和match函数的结合使用

=INDEX(A2:A11,MATCH(E8,B2:B11,0))。公式首先使用match函数E8单元格姓名在B2到B10单元格中的相对位置5,也就是这个区域所在第几行,再以此作为index函数的索引值,从A2到A11单元格中返回对应位置的内容。这个公式看似繁琐,实际在查询时其组合灵活多变,可以完成从左到右,从上到下等多个方向的查找。

Excel2013所有逆向查询的方法

5.lookup函数

=LOOKUP(1,0/(E8=B2:B11),A2:A11)这是比较经典的lookup函数的用法,首先用E8=B2:B11得到一组逻辑值,再用0除以这些逻辑值,得到由0和错误值组成的内存数组,再用1作为查询值,在刚才得到的内存数组中查询,如果lookup函数得不到查询值,那么它与查询区域中小于或等于查询值的最大匹配值匹配,因此是以最后一个0进行匹配,并返回A2到A11中相同位置的值。

Excel2013所有逆向查询的方法

6.以上四种逆向查询方法的总结

给大家介绍了四种逆向查询的方法,那么它们又有什么区别呢?如果查询的结果有多条,也就是我们查询一个姓名的时候出现了多个工号,这就说明公司有重名的现象,这个时候前三个逆向查找的公式都是返回首个满足条件的值,而lookup函数则是返回最后一个满足条件的值,这一点大家要格外格外的注意。

Excel2013所有逆向查询的方法

以上就是Excel2013在查询值不在首列时怎么完成查询方法介绍,操作很简单的,大家学会了吗?希望能对大家有所帮助!