看了进阶君多篇关于下拉列表的教程,许多小伙伴都索取素材后,纷纭练习,于是有新的问题不断涌现。个中,智能下拉列表的问题相对集中,于是在这里做一个与智能下列拉表的磋商。
大家对付智能下拉列表兴趣浓厚缘故原由在于实际事情的当中的痛点。对付某些单元格,通过数据据有效性做成下拉列表的形式后,对付数据输入效率有所提升。但是,如果有一个下拉列表里面有50项,要去找个中的选项,是非常麻烦和低效的。
有这样的案例:某地某部门组织工程招标,参加竞标的公司名单如下图所示。

公司名称为随意设定,如有侵权,请联系我们处理
事情职员小明,在招标结束后,须要做出数据报表,为了准备和方便,他把公司名单设置为了事情表当中 中标公司 列下单元格的下拉列表,如下图所示。
很快,小明创造在这么多公司选项里面去找一个公司,真是太麻烦了。能不能输入公司的关键字,下拉列表以此为依据,将干系数据项显示,而将无关数据项打消倒呢?
在EXCEL中当然是可以实现的。如果用VBA代码实现,效果好,但是学习本钱高;如果用函数实现,效果不完美,但是学习本钱低。在这里,进阶君采纳函数来实现。
1 什么是智能下拉列表?智能下拉列表,很多小伙伴都见过。最常见的类似样例,便是在百度里面进行搜索内容时输入效果。如:当我们分别输入重庆、北京、上海时,下拉列表会自动变换相应的数据选项,相较而言,EXCEL里面通过数据有性做出的下拉列表就显得笨、呆、傻了。
所谓的智能下拉列表:根据输入的关键字,动态变革下拉列表中的可选项,减少无关选项。
从这个含义描述来看,我们须要做三步事情:
第一步:须要将所有的可选项放入下拉列表。
第二步:输入查找关键字
第三步:根据输入的查找关键字,动态变革下拉列表内容。
2 若何建立智能下拉列表?第一步:建立数据源,明确输入查找关键字单元格和下拉列表的之间的关系。
根据案例描述,进阶君建立了如下图所示的数据源。特殊强调的是,竞标公司名单是按照公司名称降序排序的。
输入查找关键字的单元格与下拉列表之间的关系大体有两种:其一,输入查找关键字的单元格与下拉列表在同一个单元格;其二,输入查找关键字的单元格与下拉列表在不同的单元格。两种做法稍有差异,但是做在同一个单元格内更显高端与简洁,进阶君就来实现此种效果。
第二步:明确下拉列表查询的关键字
通过不雅观察,我们可以创造,下拉列表中的公司名称开头代表公司区域归属,分为重庆、四川、北京、上海四类,每类下面的可选项数目很少。于是我们可以将重庆、四川、北京、上海四类作为下拉列表查询的关键字。
第三步:弄明白查询中通配符的浸染
在查询当中,常常会利用到通配符。
所谓的通配符是指,在查询当中利用一个分外符号来代表一个或多个字符。
通配符常用的有\"大众\公众和\"大众?\"大众两类符号(把稳,这两个符号都是在英文输入法状态下输入),分别代表的含义是:
①?:代表一个字符。
比如:查找姓名为 \"大众刘星\"大众 的人,我们直接查找“刘星”;如果查找姓名以“刘”开头,共计2个字的,我们该当查找“刘?”; 如果查找姓名以“刘”开头,共计3个字的,我们该当查找“刘??”。再次强调:? 一定是在英文输入法下输入的。查找效果如下动图所示:
②:代表任意个字符。
比如:查找姓名中以“西”字开头,我们可以查找“西”; 查找姓为“欧阳”的,我们可以查找“欧阳”;查找姓名当中含有“飞”字的,我们可以查找“飞”。再次强调:一定是在英文输入法下输入的。查找效果如下动图所示:
第四步:利用数据有效性,建立下拉列表
(1)选择单元格区域:选中数据源中的C3:C7单元格
(2)设天命据有效性
依次点击数据菜单、数据有效性设置,在设置窗口中作如图所示的设置:
个中,来源=OFFSET($E$3,MATCH(C3&\"大众\"大众,$E$3:$E$14,0)-1,0,COUNTIF($E$3:$E$14,C3&\"大众\"大众),1)
这个公式在做多级菜单联动时常常利用,在这里不做详讲。如果有遗忘的小伙伴,请查看进阶君前面的教程。
「函数说24」多级下拉菜单联动,名称太多随意马虎晕?高等招数:一个公式轻松搞定
详细操作过程及效果如下动图所示:
(3)办理单元格不能随意输入问题
通过第2步操作,我们可以实现单元格的下拉列表了,但是现在下拉列表里面显示的是所有可选项。我们须要输入关键字来动态更新可选项,但是到目前为目这样做是有问题的。如动图所示。
为什么会涌现这种情形呢?首先必须解释,涌现这种情形是精确的。由于刚才做的数据有效性,解释这些单元格里面只能选择或输入参加竞标公司的名称,而重庆、北京、四川、上海四项不是公司名称,当然会出错。
如何办理?修正一下这些单元格的数据有效性设置。在弹出的有效性设置窗口中,进行如下操作:
(4)验证效果
对干系单元格数据有效性进行修正后,在单元格里面输入查询关键字,会创造下拉列表里面的选项动态调度了,我们成功实现了效果。详细效果如下动图所示:
3 可不可进一步改进?
做到这一步后,我们创造智能下拉列表基本功能已经实现了,但是存在着一些不完美,明显的地方有两点:
①下拉列表不能自动显示:下拉列表必须手动点击单元格右侧的按钮才会涌现。
②下拉列表内容不能随着输入变革:下拉列表的内容只要在输入结束后才会变革,不能一边输入一边变革。
进阶君须要解释的是,智能下拉列表不靠VBA编程和控件,要实现如百度搜索效果基本不可能,而这些内容绝大多数小伙伴很陌生,以是进阶君就在这里不去展开,后续进阶君会推出VBA专题系列教程,敬请大家关注。
在这里展示一个输入查询关键字,回车后,下拉列表自动展示的例子。
源代码在此:
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column = 3 And Len(Target.Value) <= 2 Then '如果改变的单元格是第3列,即C列,同时单元格内容的长度小于即是2 Target.Select '将改变的单元格选中 Application.SendKeys \"大众%{down}\"大众 '仿照键盘上按下 alt+向下方向键,浸染是将单元格所在的下拉列表展开 End If End Sub
4 总结与把稳智能下拉列表,实现的基本思路便是在进行数据有效性设置时,将输入项和通配符联合进行进查询,使得下拉列表选项动态变革,减少无关项。再这里须要再次强调,通配符的输入一定是在英文输入法状态进行的。
为方便小伙伴们学习,进阶君将原始素材共享出来,获取素材的方法:
第一步:关注 Excel进阶教室。
第二步:私信 Excel进阶教室,由于设定的是自动回答,以是内容一定要准确
私信内容:练一练
第三步:根据得到信息打开网盘,找到 答粉03智能下拉列表 事情簿 自行下载