Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

下拉菜单的制作和使用 , 在工作中非常普及,很多人都会 。
但是,如果下拉菜单选项列表过多,每次选择的时候要不停地拖动、寻找 , 这会非常浪费时间 。
所以 , 今天就教大家做一些优化:制作带模糊查询功能的下拉菜单 。也就是说 , 在保留原有功能的基础上 , 还可以通过输入关键字,搜索菜单项列表 。
下面就来看制作方法 。

案例:

基于下图 1 的数据表制作查询表格,要求:
  • 将“姓名”制作成下拉菜单
  • 根据“姓名”查询出“与投保人关系”
  • 下拉菜单具有关键字模糊查询功能
效果如下图 2 所示 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

解决方案:

今天教大家两种解决方案,先说优劣 。
解决方案 1:
优点:
  • 公式相对简单,更加容易上手
缺点:
  • “姓名”列必须排序,如果顺序打乱 , 查询结果会出错
  • 只能从姓名的第一个字开始,依次输入关键字查询;比如,如果查询“美”,结果会出错
解决方案 2:
优点:
  • “姓名”列不需要排序
  • 不需要从第一个字开始查询 , 查任何位置的关键字都能出正确结果,这才是真正的智能查询
缺点:
  • 公式相对复杂一些,对部分同学来说理解较困难

解决方案 1:

先看一下最终效果 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

先将表格按“姓名”重新排序 。
1. 选中 A1 至 B15 区域,选择菜单栏的“数据”-->“排序”
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

2. 在弹出的对话框中按以下方式设置 --> 点击“确定”
  • 勾选“数据包含标题”
  • 主要关键字:姓名

Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

现在数据表按照姓名的拼音升序排列了 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

接下来开始制作下拉菜单 。
3. 选中 D2 单元格 --> 选择菜单栏的“数据”-->“数据验证”
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

4. 在弹出的对话框中选择“设置”选项卡,进行以下设置:
  • 允许:序列
  • 来源:=OFFSET($A$2,MATCH("*"&$D$2&"*",$A$2:$A$14,0)-1,0,COUNTIFS($A$2:$A$15,"*"&$D$2&"*"),1)
公式释义:
  • OFFSET(起始单元格,要偏移的行数,偏移的列数为 0,要引用多少行,引用 1 列)
  • MATCH("*"&$D$2&"*",$A$2:$A$14,0)-1:在 A2 至 A15 区域模糊查找包含 D2 内容的单元格,找到后返回行号,将该行号 -1,即需要偏移的行数
  • COUNTIFS($A$2:$A$15,"*"&$D$2&"*"):统计 A2 至 A15 区域中,包含 D2 内容的单元格个数 , 即需要引用多少行
有关 OFFSET MATCH 组合公式的详解,请参见下方专栏中的【除了 vlookup , 这几个经典组合公式基本可以解决所有查找问题】 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

5. 选择“出错警告”选项卡 --> 取消勾选“输入无效数据时显示出错警告”--> 点击“确定”
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

最后设置 E 列的查询公式 。
6. 在 E2 单元格中输入以下公式:
=IFERROR(VLOOKUP(D2,A:B,2,0),"")
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

现在就已设置完成,以下是演示效果 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

解决方案 2:

相比前一种方法,效果更佳,不需要排序“姓名”列 , 还可以查找姓名中间的任何一个字 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

1. 将 G 列用作辅助列,在 G2 单元格中输入以下公式 --> 按 Ctrl Shift Enter 使数组公式生效:
【Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法】=INDEX(A:A,SMALL(IF(ISNUMBER(FIND(CELL("contents"),$A$2:$A$15)),ROW($A$2:$A$15),4^8),ROW(A1)))&""
以上是经典的万精油公式,有关万精油公式的详解,请参见下方专栏中的【除了 vlookup,这几个经典组合公式基本可以解决所有查找问题】 。
公式释义:
  • A:A:在 A 列中查找
  • CELL("contents"):返回单元格的值
  • FIND(CELL("contents"),$A$2:$A$15):查找该值在“姓名”列表中是否存在,存在会返回一个位置数值,不存在则返回错误值
  • IF(ISNUMBER(FIND(CELL("contents"),$A$2:$A$15)),ROW($A$2:$A$15),4^8):用 isnumber 函数判断 find 结果是否为数值;如果是,就返回其行号;如果不是 , 则返回 4^8
  • SMALL(...,ROW(A1)):依次取出数组中第 n 小的值,这个 n 就是 row() 函数返回的值
  • 最后用 index 函数根据行值 , 查找出姓名
  • &"":去除无意义的 0 值

Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

2. 向下拖动复制公式,至最后一个姓名所在的行
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

3. 选中 D2 单元格 --> 选择菜单栏的“数据”-->“数据验证”
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

4. 在弹出的对话框中选择“设置”选项卡 , 进行以下设置:
  • 允许:序列
  • 来源:选择刚才制作的辅助列区域

Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

5. 选择“出错警告”选项卡 --> 取消勾选“输入无效数据时显示出错警告”--> 点击“确定”
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

6. 在 E2 单元格中输入以下公式:
=IFERROR(VLOOKUP(D2,A:B,2,0),"")
现在就已设置完成,以下是演示效果 。
Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

Excel - 制作带模糊查询功能的下拉菜单,一次教你两种方法

很多同学会觉得 Excel 单个案例讲解有些碎片化,初学者未必能完全理解和掌握 。不少同学都希望有一套完整的图文教学,从最基础的概念开始,一步步由简入繁、从入门到精通,系统化地讲解 Excel 的各个知识点 。
现在终于有了,以下专栏 , 从最基础的操作和概念讲起,用生动、有趣的案例带大家逐一掌握 Excel 的操作技巧、快捷键大全、函数公式、数据透视表、图表、打印技巧等……学完全本,你也能成为 Excel 高手 。


相关经验推荐