上一篇我们讲到了如何在Excel中创建基础的下拉菜单,然而在很多业务场景里,需要首先选择一级菜单,再根据一级菜单的选择内容决定二级菜单有哪些选项,看到这里,你想到了哪些应用场景呢?没错,最常见的就是【省份+城市】的二级下拉菜单组合。今天的示例代码就以此构建。
最终的效果如图所示:
文章摘要- 第一步、创建二级选项列表- 第二步、分别定义列表名称- 第三步、数据关联- 思考题:如何设置N级下拉菜单
第一步、设置二级选项数据
1.1 创建一个sheet表,专门存放菜单选项:
1.2 在标签列表中,输入一级、二级菜单,使它们在同一行或同一列:
第二步、依次设置变量名
2.1 一级菜单的变量名设置和上篇讲的一样,选中、左上角输入框设置,忘记的话可以返回上一篇查看:
2.2 二级菜单的变量名设置方式有些许不同,选中同一行(包含一级、二级),点选上方的【公式】选项卡,点击【根据所选内容创建】:
2.3 在弹出的窗口里,选择最左列。这个的含义就是将最左列的一级菜单的名称和后面的二级菜单的所有选项进行了关联,使用这种方式,防止出现一级菜单选项太多而打错字的情况。
第三步、在主表中进行菜单设置
3.1 返回主表,找到省市那一列的单元格,开始设置一级菜单,这还是上节课的内容:
弹窗选择【允许:序列】【来源:=一级菜单变量名】
一级菜单设置成功:
3.2 找到城市那一列的单元格,开始设置二级菜单。
弹窗的选项这么设置:
这里注意,来源要写
=INDIRECT(INDIRECT("$一级菜单所在列的字母序号"&ROW()))
解释一下:
这是一个嵌套结构,里面涉及到了INDIRECT函数,意思就是获取某个单元格的引用值。那么我们先看里面的那一层INDIRECT函数:
INDIRECT("$一级菜单所在列的字母序号"&ROW())
字面意思是,获取“一级菜单那一列、当前单元格所在行”的那个单元格的引用值,也就是当前二级菜单的一级菜单嘛!~
好,现在拿到了那个值,假设说是“广东省”,那么外层函数就是INDIRECT("广东省"),这是什么意思呢?请注意INDIRECT函数括号里的值永远都表示单元格,因为这个函数的用法就是获取某单元格的引用值,因此,此时的“广东省”并不是三个文本字符,而是代表你刚才在第二步里设置的那一组叫“广东省”的二级菜单选项的单元格组,所以顺推引用值,就是广东省的所有二级菜单选项。
好的,推导到这里你应该已经懂了,是不是有种醍醐灌顶的赶脚?我们看一下设置好的二级菜单:
它会根据左边一级菜单的内容而改变选项:
思考题:如何设置三级菜单、四级菜单……N级菜单?
这里留一个思考题,你可以在下方留言评论,没有任何奖励,只是帮助你更深刻的理解Excel的名称管理器、数据验证,熟练掌握而已~
另外,想要设置一整列选项、隐藏sheet数据表,这些进阶技巧在上一课也都讲了,本篇就不再赘述。
总结
制作一个简单的二级下拉菜单,总共需要如下几步:
1、创建菜单选项表格;
2、分别设置一级、二级菜单选项的变量名称;
3、回到主表,设置一级菜单;
4、设置二级菜单,这里需要用到INDIRECT()函数,也可直接复制粘贴公式;
5、大功告成!
关注本头条号并回复关键词【Excel】就可以获得到现在和未来出的所有Excel自动化相关的示例文档。