EXCEL中进行数据处理时经常要进行数据查询,比如根据工号查询个人信息、根据学生姓名查询成绩、根据项目定义查询项目概况等,常用的查询函数如VLOOKUP,但VLOOKUP的常规用法是从左向右查询,如何从右向左进行查询呢?本文今天介绍4种逆向查询方法。 1. INDEX和MATCH的组合 =INDEX(B3:B10,MATCH(H3,C3:C10,0)) 这个组合公式先用 MATCH(H3,C3:C10,0)返回H3在C3:C10中的相对位置,再以此位置为索引值,利用INDEX函数返回索引值所对应的部门。 2. VLOOKUP和IF函数的组合 如下图所示,要求根据员工姓名查询所在部门,使用公式为: =VLOOKUP(H3,IF({1,0},C3:C10,B3:B10),2,FALSE) 这个组合函数的核心是用IF({1,0},C3:C10,B3:B10),返回一个姓名在前、部门在后的多行两列的内存数组,使其符合VLOOKUP函数的查询值处于查询区域首列的条件,再用VLOOKUP查询即可。 3. VLOOKUP和CHOOSE函数的组合 =VLOOKUP(H3,CHOOSE({1,2},C3:C10,B3:B10),2,FALSE) 这个组合函数的核心是CHOOSE({1,2},C3:C10,B3:B10),也是重新构建一个内存数组,使之符合VLOOKUP的查询要求。 4. LOOKUP函数的逆向查询 最后一个介绍的压轴函数是无往不利的LOOKUP,它堪称EXCEL界的查询利器。 =LOOKUP(1,0/(C3:C10=H3),B3:B10) 这个函数写法是典型的LOOKUP万金油式写法。首先用C3:C10=H3得到一组逻辑值,再用0除以这些逻辑值,得到由0和错误值组成的内存数组。再用1作为查询值,在内存数组中进行查询。 如果 LOOKUP 函数找不到查询值,则它与查询区域中小于或等于查询值的最大值匹配,因此是以最后一个0进行匹配,并返回B3:B10中相同位置的值。 欢迎多留言,多交流! |
|