![61b05cb4cdd5f0e811200e7d982f67b2.png](https://i-blog.csdnimg.cn/blog_migrate/9bcedb540b8f9725dc384d66f834be7c.jpeg)
在实际的工作中,应用到下拉菜单的地方非常多,一把情况下都是为了规范数据的输入,放置数据冗余,且都是一级的。如果要制作二级下拉菜单,且必须是联动的,该如何去实现呢?
目的:根据下图,当在一级菜单中选择相应的课程时,在二级菜单中只能选择对应的讲师。
![e3cb584281e0481228d1c7dad8aef991.png](https://i-blog.csdnimg.cn/blog_migrate/fe7663789c4cf3e2355fc993ebdd3c36.jpeg)
一、必备函数:Choose+Match。
(一)Choose。
功能:根据给定的索引值,从参数中选出相应的值或操作。
语法结构:=Choose(索引值,返回值1,返回值2,返回值3,返回值4……返回值N)。
目的:返回“计算机基础”中的第2位讲师和第3行的第3位讲师。
![72fc7530aef2dc9e9022ed5dac9a8219.gif](https://i-blog.csdnimg.cn/blog_migrate/5b197e6a2a18656e6ccc674c7a6d9403.gif)
方法:
在目标单元格中输入公式:=CHOOSE(2,C3,C4,C5,C6,C7)、=CHOOSE(3,B5,C5,D5,E5)。
解读:
从公式中可以看出,Choose函数即可以在行中提取值,也可以在列中提取值,只需将对应的值放置在相应的参数中即可。
(二)Match。
功能:返回符合特定值特定顺序的项在数组中的相对位置。
语法结构:=Match(定位值,值所在的范围,匹配类型)。
注意事项:
参数“匹配类型”有三个值,分别为-1、0、1;分别代表“大于”、“精准”、“小于”。
目的:返回课程中“书法”的位置和“计算机基础”讲师“徐庶”的位置。
![e6d0732327e79482622f84dc7146cd05.gif](https://i-blog.csdnimg.cn/blog_migrate/3d3512cd1047ae8831010cf14b434818.gif)
方法:
在目标单元格中输入公式:=MATCH("书法",C2:E2,0)、=MATCH("徐庶",C3:C7,0)。
解读:
从公式中可以看出,Match函数即可以在行中定位,也可以在列中定位。
二、二级联动下拉菜单技巧。
思路分析:当在一级菜单中选择相应的课程,如“计算机基础”时,二级菜单中只能出现:甘夫人、孙尚香、袁绍、徐庶、赵云;而不能出现其他的值。也就是首先定位课程的相对列数,然后根据相对列数的值返回对应的值。
一级菜单:
![9ea0bb34c2232e217a158e7ec5193db4.gif](https://i-blog.csdnimg.cn/blog_migrate/6bdf79d1bd2a32ebb35523cad0a20385.gif)
方法:
选中“课程”列中的下单元格区域,【数据】-【数据验证】,打开【数据验证】对话框,选择【允许】中的【序列】,单击【来源】右侧的折叠按钮,选择需要显示的内容,并单击展开按钮返回【数据验证】对话框,【确定】即可。
二级菜单:
![8d7a2fbb43b306d379383254eb35fd6b.gif](https://i-blog.csdnimg.cn/blog_migrate/80e619eece4b24ca9b4ac7c3450eff17.gif)
方法:
选中“讲师”列中的单元格区域,【数据】-【数据验证】,打开【数据验证】对话框,选择【允许】中的【序列】,在【来源】中输入:=CHOOSE(MATCH(B3,Match!$C$2:$E$2,0),Match!$C$3:$C$7,Match!$D$3:$D$7,Match!$E$3:$E$9)并【确定】。
解读:
二级菜单的关键在于【来源】中的公式:=CHOOSE(MATCH(B3,Match!$C$2:$E$2,0),Match!$C$3:$C$7,Match!$D$3:$D$7,Match!$E$3:$E$9)。
其本质为Choose函数和Match函数的嵌套应用,首先用Match函数定位“课程”所在的相对列数,然后根据相对列数返回对应的讲师。