
文章插图
②创建联动菜单
Step1:创建一级菜单
为区域中的省份一列创建一级菜单,创建方法通过“引用区域”的方式,直接将第一个图中的B1:D1区域作为数据来源,这里不在赘述 。
Step2:为上图中的“市”创建二级菜单
选中【市】列需要设置的单元格区域→在验证条件中选择【序列】→【来源】中输入公式=INDIRECT($C3)→点击【确定】,此时会弹出错误提示,点击【是】继续下一步即可,如图 。

文章插图
提示:这里出错的原因是此时C3单元格中为空,还未选择省份的数据,找不到数据源,不影响二级菜单的设置 。
完成之后,就实现了二级联动菜单,如图所示 。

文章插图
原理解析
实现二级联动菜单的核心是:定义名称和INDIRECT函数,理解这两个核心是解题的关键 。
原理①:根据“名称”的作用,当我们定义名称“江苏省”时,那么在函数引用中,“江苏省”能够代替“南京、苏州……”
原理②:INDIRECT函数为间接引用,他可将文本转化为引用 。
如图是间接引用于直接引用的不同 。

文章插图
将原理①和原理②结合起来,以江苏为例,在来源中输入的公式=INDIRECT($C3)的意思是,首先C3单元格中的值是“江苏省”,而INDIRECT可以将文本换成引用,而“江苏省”已经定义为名称,代表的是“南京、苏州……”,所以二级下拉菜单中出现的南京市、苏州市等 。
多级下拉菜单的制作原理是完全一样的,学会了二级下拉菜单,三级菜单甚至四级菜单应该也不成问题,自己动手试一试吧!
03、查询式下拉菜单
下拉菜单的目的之一是提高输入的效率,但是,如果选项过多,那么下拉列表势必会很长,此时要想快速从下拉菜单中找到目标选项就非常困难 。
我经常在想,如果能进行搜索下拉菜单该多好啊,这里教给你的方法,虽然没有搜索框,但是能模拟搜索的效果 。
我把它称为查询式下拉菜单 。
如图,要根据A列的集团列表,在E2单元格创建查询式下拉菜单,更方便地选择集团 。该下拉菜单可以根据E2单元格内输入的第一个字来动态显示所有以输入汉字开头的集团,即实现查询作用 。

文章插图
Step1:对A列的集团进行升序排序 。
Step2:选中E2单元格,打开「数据验证」对话框 。在“允许”中选择“序列”,并在“来源”中输入公式:
=OFFSET($A$1,MATCH($E$2&\”*\”,$A$2:$A$15,0),,COUNTIF($A$2:$A$15,$E$2&\”*\”),1)

文章插图
Step3:在「数据验证」对话框,切换到「出错警告」窗口,取消勾选「输入无效数据时显示出错警告」,然后点击确定,完成设置 。

文章插图
最终的效果如下动图所示:

文章插图
操作步骤同样很简单,难点是来源里面设置的公式 。
①为什么要对集团数据列进行升序排序
排序之后,可以将第一个字相同的集团排在一起,这样在后面的输入首字进行查询式,这些集团都能够显示出来 。
②OFFSET函数
它的语法形式是 OFFSET(reference,rows,cols,height,width),参数1为参照系,参数2为偏移行数,参数3为偏移列数,参数4为返回几行,参数5为返回几列 。
总之,这里主函数OFFSET的作用就是:当E2单元格内输入首字时,找到以输入的汉字开头的集团名称,并引用所有符合条件的集团作为下拉菜单的显示内容 。
③MATCH($E$2&\”*\”,$A$2:$A$15,0)
在集团列表中查找以E2单元格字符开头的集团名称,返回找到的对应的第一个集团在列表中的序号;
④COUNTIF($A$2:$A$15,$E$2&\”*\”)
在列表中统计以E2中字符开头的集团的个数
这里,MATCH函数作为OFFSET的第二个参数,即向下移动的行数;COUNTIF函数作为OFFSET的第4个参数,即从集团列表中返回的行数 。
举例:当E2中输入“广”时
MATCH($E$2&\”*\”,$A$2:$A$15,0)返回以广开头的集团在$A$2:$A$15中的序号,即2(广发集团排在第二位) 。
推荐阅读
- 初吻是什么 初吻情结什么意思
- float是什么意思 c语言main函数
- 四面楚歌什么意思 淋漓尽致的意思
- 起亚智跑天窗设定 起亚智跑天窗复位方法是什么
- 簇簇的前面两个字是什么 簇簇的前面两个字是什么二年级
- 眉毛有一根特别长是什么意思 右眉毛长了一根长眉毛
- model是什么牌子 modes什么牌子
- omg什么意思 女生对男生说omg
- 瓜田李下什么意思 有瓜田李下之嫌是什么意思
- 金钱是什么 金钱社会太现实的句子