Excel⾥有没有办法做出⽹页上搜索框那种实时输⼊提⽰的效果?
当然可以了,如果会⽤VBA,那么⼏乎你看到的多数⽹站上的功能,它都能实现,因为它也是
⼀种变成语⾔啊!
但是,今天我想给你讲的⽅法,不⽤VBA编程(VBA毕竟门槛太⾼了),⽽是使⽤函数和数据
有效性即可完成。
实现的效果是怎样的呢?如图所⽰,当我们输⼊关键字之后,菜单就能⾃动变更为与关键字模
糊匹配的选项,所以我们把这种菜单也叫做查询式下拉菜单或⾃适应下拉菜单。
⼀起来学习如何通过数据有效性和公式制作这样的下拉菜单。
Step1:数据源准备
如图所⽰,A列数据作为下拉菜单的数据源,⾸先需要对A了中的数据进⾏排序(升序降序均
可),我们把菜单设置在E2单元格中。
Step2:设置下拉菜单
在设置数据验证窗⼝中,来源填⼊公式:
=OFFSET($A$1,MATCH($E$2&'*',$A$2:$A$15,0),,COUNTIF($A$2:$A$15,$E$2&'*'),1)
广汽汽车
Step3:对公式的解读
①使⽤E2输⼊的数值和*组合,即$E$2&'*'来充当Match函数的第⼀个参数,来进⾏模糊查匹配;
②对于公式COUNTIF($A$2:$A$15,$E$2&'*'),来计算在$A$2:$A$15数据列中,出现E2中输⼊内容的次数,这个公式返回的结果当做Offset函数的第四个参数,⽤来决定Offset函数偏移的⾏⾼;
③最外层的Offset函数,它的语法形式是OFFSET(reference,rows,cols,height,width),翻译⼀下就是OFFSET(参照单元格,偏移⾏数,偏移列数,⾏数,列数)
所以整个公式的意思是:
OFFSET($A$1,MATCH($E$2&'*',$A$2:$A$15,0),,COUNTIF($A$2:$A$15,$E$2&'*'),1)
以A1单元格为参照,向下偏移到E2单元格所在的第⼀个位置,然后总⾏数为E2单元格中的内容所重复的个数,把这个区域作为下拉菜单的数据源。
举例:在E2单元格中输⼊【⼴】字,由于模糊查询,会查出来⼴发集团、⼴汇集团、⼴汽集团,以A1单元格为参照,向下偏移3⾏,总⾏⾼为3,这个数据区域刚好是⼴发集团、⼴汇集团、⼴汽集团数据,然后再以这三个数据作为下拉菜单的数据源,这样是所谓的查询式下拉菜单。
「精进Excel」系头条签约作者,关注我,如果任意点开三篇⽂章,没有你想要的知
识,算我耍流氓!