菜鸟记161-用INDEX函数为自己定制一个查询器


关键词:EXCEL2016;VLOOKUP函数;LOOKUP函数;INDEX+SMALL+IF函数;查询数据;操作难度****

温馨提示:本文结合以下文章阅读收获更大

菜鸟记6-做领导喜欢的工作表之下集——快速提取同类数据到单元格

菜鸟记48-VLOOKUP让数据自动匹配

菜鸟记49-哪些VLOOKUP闹的脾气

菜鸟记51-查询家族lookup的必杀技套路

小菜掌管着教务管理系统的师资账号信息,时不时会有老师忘记了自己的工号,或对应工号对应的到底是谁,小菜每次都要通过自动筛选后进行查询,比如像这样的:

这样的事情多了以后,小菜决定自己制作一个查询器,以备各系部不时之需。

大约会有以下两种情况:

1.根据工号(唯一标识)查询其他信息;

2.根据姓名查询其他信息

小菜经过研究后,发现可以用以下函数来解决问题:

根据工号查询其他信息

由于工号具有唯一标识且位于数据表的第一列,咱们熟悉的VLOOKUP和LOOKUP函数就派上用场了,咱们查询对应系部的公式这样写“=VLOOKUP(G2,$A$2:$C$197,2,0)”;或“=LOOKUP(1,0/($A$2:$A$197=G3),$B$2:$B$197)

查询对应姓名的公式这样写“=VLOOKUP(G2,$A$2:$C$197,3,0)”;或“=LOOKUP(1,0/($A$2:$A$197=G3),$C$2:$C$197)

请看会动的图

根据姓名查询其他信息

LOOKUP函数

由于姓名不在数据表的首列,VLOOKUP函数的逆向查询太复杂,不推荐,咱们用LOOKUP函数试试,查询工号和姓名的公式依次写成“=LOOKUP(1,0/($C$2:$C$197=L2),$A$2:$A$197)”和“=LOOKUP(1,0/($C$2:$C$197=L2),$B$2:$B$197)”;

请看会动的图

您看出问题了吗?LOOKUP函数没有解决重名的情况,这时候咱们请出另一个函数试试

INDEX+SMALL+IF函数

小菜和您分享一个套路公式:“=IFERROR(INDEX(A:A,SMALL(IF(C:C=Q$2,ROW(C:C)),ROW(C1))),"")”和“=IFERROR(INDEX(B:B,SMALL(IF(C:C=Q$2,ROW(C:C)),ROW(C1))),"")”

小菜划重点:这个公式看着很复杂,咱们分三个部分解读:

一是内层的IF函数,判断Q2单元格的姓名依次和C列进行比对,如果一致则返回所在的行号,不一致则返回FALSE;

二是SMALL函数的作用是对IF的返回值进行取数,随着公式的填充,依次提取第1、2、3……个最小值,由此得到符合要求的行号。

三是INDEX函数,根据对应的行号在其他列取出相应的数据。

特别说明:由于该公式属于数组公式,记得按CTRL+ SHIFT + ENTER完成输入,再向下填充才能得到结果,嵌套的IFERROR函数是提醒您填充至空白数据为止。

请看会动的图

今天就是这些,希望小菜的分享能帮到您或有所启发,欢迎您有问题联系,为小菜提供更多思路。

休息一下,休息一下


版权声明:文中所用图片除注明作者或出处外,均为本人亲自按动快门拍摄或截取,请勿盗用。

(0)

相关推荐