在日常工作中,表格信息查询十分常见,通常采用查找对话框或筛选功能。今天为大家介绍一种通过函数实现的查询工具,支持模糊搜索和多字段查找,操作便捷,提升数据检索效率,实用性强。
不多废话,先上一张动态效果图,让朋友感受查询器的神奇之处。

二.使用方法:
在G1单元格通过下拉菜单选择查询依据字段。
在G2单元格中输入需查找的信息。
查找内容支持简写,如选择姓名为查找依据时,输入孙即可查询所有姓孙的学生信息。

三.制作过程
在G1单元格创建一个下拉列表。

在H1单元格中输入如下公式:=INDEX(INDIRECT(CHAR(64+MATCH(H$1,$A$1:$E$1,0))&:&CHAR(64+MATCH(H$1,$A$1:$E$1,0))),SMALL(IF(ISNUMBER(FIND($G$2,INDIRECT(CHAR(MATCH($G$1,$A$1:$D$1,0)+64)&2:&CHAR(MATCH($G$1,$A$1:$D$1,0)+64)&COUNTA($A:$A)))),ROW($A$2:$A$83),10000),ROW(C1)))&,然后将该公式向右和向下进行填充。此公式通过MATCH函数定位H1所在列标题在首行中的位置,并结合CHAR函数将其转换为对应的列字母,利用INDIRECT函数构建动态引用列。同时,根据G1单元格的内容查找匹配的列,再通过FIND函数判断G2关键词是否存在于对应列的数据中。若存在,则记录其所在行号;否则返回一个极大值。使用SMALL函数依次提取符合条件的第n小的行号,并结合ROW(C1)实现自动递增。最后通过INDEX函数从相应列中提取出对应行的数据内容,确保结果为文本格式。整个公式支持多条件筛选并可随拖拽自动更新引用范围。

3. 使用条件格式自动为费控单元格添加边框。

四.公式解析:
利用FIND函数检测指定列中各单元格是否包含目标值,再通过ISNUMBER函数判断返回结果是否为数字,从而生成一个由TRUE或FALSE组成的逻辑值数组。
通过MATCH函数确定$G$1在$A$1:$D$1中的列位置,加上64后由CHAR函数转换为对应字母,再结合2:及数据总行数,利用INDIRECT构建动态引用区域,实现对指定列从第2行到末行的有效范围定位。
其他解析可参考本文,由万金油公式一对多查找延伸而来。
注意:此为数组公式,输入完毕需按Ctrl+Shift+Enter确认。