我们都知道,在Excel2013里面最常用的查询函数是vlookup,比如根据员工工号查询他的考勤、工资等等,还有根据学生的考号查询他的成绩,这个最受欢迎的vlookup函数都可以一键帮我们搞定,但是vlookup函数有个致命的缺点,就是查询值必须在查询区域的首列,那么在查询值不在首列的情况怎么完成查询呢?
1.vlookup函数正向查找
为了和后面的逆向查找做个对比,我们先来看下vlookup函数的正向查找,利用工号查找姓名,
=VLOOKUP(E5,A2:B11,2,0)的意思就是以E5单元格的工号为查找值,在A2到B10的查找区域,在首列中找到与E5相同的工号,然后返回这个区域中与之对应的第2列(也就是姓名列)的姓名。这就是vlookup函数的正向查找,那么现在我想以姓名为查找值,在这个区域里查找和姓名对应的工号要怎么办呢?
2.vlookup函数的逆向查找一
逆向查找的第一种方法同样是利用vlookup函数,搭配if函数重新构建个数组来使用。这个公式的用法是利用if({1,0},B2:B11,A2:A11)返回一个姓名在前,工号在后的多行两列的内存数组,这样它就符合vlookup函数的查找值在首列的要求,可以顺利进行查找了。
3.vlookup函数的逆向查找二
vlookup函数逆向查找的第二种方法是搭配choose函数重新构建一个内存数组,choose({1,2},B2:B11,A2:A11)同样是返回一个姓名在前,工号在后的多行两列的内存数组,与if不一样的是,choose函数变成了{1,2},这点大家要注意。
4.index和match函数的结合使用
=INDEX(A2:A11,MATCH(E8,B2:B11,0))。公式首先使用match函数E8单元格姓名在B2到B10单元格中的相对位置5,也就是这个区域所在第几行,再以此作为index函数的索引值,从A2到A11单元格中返回对应位置的内容。这个公式看似繁琐,实际在查询时其组合灵活多变,可以完成从左到右,从上到下等多个方向的查找。
5.lookup函数
=LOOKUP(1,0/(E8=B2:B11),A2:A11)这是比较经典的lookup函数的用法,首先用E8=B2:B11得到一组逻辑值,再用0除以这些逻辑值,得到由0和错误值组成的内存数组,再用1作为查询值,在刚才得到的内存数组中查询,如果lookup函数得不到查询值,那么它与查询区域中小于或等于查询值的最大匹配值匹配,因此是以最后一个0进行匹配,并返回A2到A11中相同位置的值。
新闻热点
疑难解答