ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 96801|回复: 160

[原创] 二级下拉菜单的简单制作法

  [复制链接]

TA的精华主题

TA的得分主题

发表于 2010-8-14 10:56 | 显示全部楼层 |阅读模式
二级下拉菜单是很有用的输入工具,比如输入班级名称,后面的列可以直接选择该班级的人员姓名。
复杂的多级下拉菜单比如,果蔬分为水果和蔬菜,水果又分为热带水果和本地水果,热带水果又包括菠萝和香蕉等。
在excel中主要是利用数据有效性和定义名称及函数的综合方法来实现。本论坛中关于如何制作二级下拉菜单甚至是多级下拉菜单的帖子非常多,但是有个问题,就是很多帖子使用了初学者比较难明白的函数组合,当时我学的时候就为此很是头疼,今天我教大家一招比较简单、容易理解和应用的制作方法,大家看后就可以操作出来的。
一、简单的二级下拉菜单制作
我直接写操作步骤了,请结合我上传的文件理解和使用。
1、选中b1:f6,插入/名称/指定,选中首行,确定,建立多个班级名称。
2、选中b1:f1,ctrl+f3,建立一个名称:班级,确定。
3、选中h2:h6,数据/数据有效性/设置/允许/序列,来源处录入“=班级”(双引号不输入,只输入双引号内的内容)。勾选“允许空值”和“提供下拉箭头”选项,确定。
4、选中i2:i6,数据/数据有效性/设置/允许/序列,来源处录入“=INDIRECT(H2)”(双引号不输入,只输入双引号内的内容)。勾选“允许空值”和“提供下拉箭头”选项,确定。
好了,现在看看,是不是改变h行的值,i列的下拉列表自动改变了呢?

二级下拉菜单的简单做法.rar

2.75 KB, 下载次数: 8671

评分

4

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-14 11:04 | 显示全部楼层
二、复杂多级下拉菜单制作
这里以一个简单的三级菜单为例进行说明。
1、需要几级菜单,就分别建立几个工作表存放,例如本例就建立了一级名称、二级名称、三级名称这三个表,这样做的好处是分类比较清晰,容易检查错误。
2、选中一级名称表的a1:b1,ctrl+f3,建立一个名称:果蔬,确定。
3、选中二级名称表的a1:b3,插入/名称/指定,选中首行,确定,建立多个二级名称。
4、选中三级名称表的a1:d5,插入/名称/指定,选中首行,确定,建立多个三级名称。
以上步骤大家看懂了吧,如果你要建立n级菜单,那就如法炮制吧,定义n个表的n个名称好了。
5、好,现在切换到三级菜单表,选中a2:a7,数据/数据有效性/设置/允许/序列,来源处录入“=果蔬”(双引号不输入,只输入双引号内的内容)。勾选“允许空值”和“提供下拉箭头”选项,确定。这是建立一级菜单选项。
6、选中b2:b7,数据/数据有效性/设置/允许/序列,来源处录入“=INDIRECT(a2)”(双引号不输入,只输入双引号内的内容)。勾选“允许空值”和“提供下拉箭头”选项,确定。这是建立二级菜单选项。
7、选中c2:c7,数据/数据有效性/设置/允许/序列,来源处录入“=INDIRECT(b2)”(双引号不输入,只输入双引号内的内容)。勾选“允许空值”和“提供下拉箭头”选项,确定。这是建立三级菜单选项。
简单吧,如果要建立n级菜单,只需要不停的按照上面的操作步骤操作即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-14 11:12 | 显示全部楼层
最后声明:
这个教程很简单,适合大家入门使用,适合分类稳定,不是经常增加的列表。
它的缺点就是不能自动扩展分类的明细,比如a班人员增加了几名,姓名列无法自动识别并加入。解决的根本办法就是定义名称时使用offset函数自动识别扩展区域,请大家自行搜索论坛的帖子,有很多用函数解决二级菜单的例子。
也有本贴所讲的土办法啊,就是手工修改名称的定义范围,也能达到目的,不过这个比较笨,不是好方法。
建议大家学会本贴所讲的简单方法,主要目的是理解二级菜单的建立思路,懂了这个后,再看那些函数组合就不会晕头转向,达到灵活运用的目的。

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-14 11:16 | 显示全部楼层
这是本人在本版发的第一个教程,写的目的是因为工作中需使用二级或多级下拉列表,但是论坛上大虾们写的帖子好复杂,可以实现非常强大的功能,但是我看了理解的不好,所以我学习了个相对简单的方法,并且发现很容易实现,所以就想把心得写下来,写得不好,请大家将就看吧,希望能给大家帮助。

TA的精华主题

TA的得分主题

发表于 2010-8-14 11:19 | 显示全部楼层
原帖由 anyingshu 于 2010-8-14 11:16 发表
这是本人在本版发的第一个教程,写的目的是因为工作中需使用二级或多级下拉列表,但是论坛上大虾们写的帖子好复杂,可以实现非常强大的功能,但是我看了理解的不好,所以我学习了个相对简单的方法,并且发现很容易实 ...

讲解的很好,我平时就是用这种方法工作的,简单!

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-14 11:30 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
实际应用中,我觉得只需要再利用函数在名称定义时实现自动扩展,并且在多级名称表中利用条件格式的颜色来判断是否有漏项,就比较完美了。

TA的精华主题

TA的得分主题

发表于 2010-8-14 11:36 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-15 11:45 | 显示全部楼层
教程中“解决的根本办法就是定义名称时使用offset函数自动识别扩展区域,”这段话是有问题的,比较好的解决办法是使用列表的自动扩展功能,既不用函数,也能顺利完成名称扩展,但是有一个副作用啊,它会带来其他名称出现空值,看上去不美观。

参考资料:[函数用法讨论系列21]关于Indirect函数引用工作表名的书写方式及对定义名称的再引用 http://club.excelhome.net/viewth ... ghlight=&page=1
(我的附件中已经将小草版主的解释表收入了)

二级下拉菜单的简单做法.rar

7.47 KB, 下载次数: 1556

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-15 16:27 | 显示全部楼层
通过写这个小教程,我对indirect函数有了进一步了解的兴趣,如果大家对indirect函数有兴趣,请看chenjun版主的精华帖子 函数的深入理解(已将头三个函数附件找到),链接是http://club.excelhome.net/viewthread.php?tid=31546

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-8-15 17:05 | 显示全部楼层
哦,我还找到了一篇小草版主写的“列表”区域与“定义名称”的妙用,也是很重要的一篇参考资料,链接是http://club.excelhome.net/thread-152396-1-1.html
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-28 07:59 , Processed in 0.040818 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表