前几天分享了一个制作联动下拉菜单的方法,但其缺乏足够的扩展性,特别是在新设部门或新增人员时,每次都要进行修改,效率不高。为解决这个问题,今天给大家分享一种更灵活的方法,即动态的二级联动下拉菜单。虽然公式可能会复杂一些,但它具有很强的扩展性,可以随时添加新的部门或人员,而无需修改公式。
一、数据表设计建议
为了提高数据处理的效率、准确性和可扩展性等,可以按照数据分层的原则构建独立的表格,例如本例中,部门人员信息作为源数据,存放在"人员"表格中,而数据处理和呈现在"下拉菜单"表格中进行,这样的设计使得我们能够更清晰地管理数据,同时也为未来的扩展提供了更便利的条件。

二、设置一级菜单
选择需要设置下拉菜单的单元格,如下图,选择A2单元格,然后依次选择“数据”--“数据验证”,在弹出的对话框中,选择“序列”,并在“来源”栏中输入:=OFFSET(人员!A1,,,,COUNTA(人员!1:1))。

三、设置二级下拉菜单
选择B2单元格,然后依次选择“数据”--“数据验证”,在弹出的对话框中,选择“序列”,并在“来源”栏中输入:=OFFSET(人员!A2,0,MATCH(A2,人员!1:1,0)-1,COUNTA(OFFSET(人员!A2,0,MATCH(A2,人员!1:1,0)-1,999,1)),1)。

MATCH(A2,人员!1:1,0):查询"部门"对应的列号,如"市场部"对应列号是"2",公式-1是因为Offset函数是从0开始起偏移,MATCH(A2,人员!1:1,0)-1的结果是"1";
OFFSET(人员!A2,0,MATCH(A2,人员!1:1,0)-1,999,1):一个数组函数,以A2单元格"张果"为起点,向下偏移0,向右偏移1,然后,引用999行(999也可以是其它足够大的数,可以足够覆盖任意部门的人员的数字),引用1列,即得到B2:B1000区域的数据;
COUNTA函数:返回A2单元格对应部门的人数;
本例整个公式结果是OFFSET(人员!A2,0,1,4,1),即返回市场部对应的人员名单。
序列的公式也可以仅用:=OFFSET(人员!A2,0,MATCH(A2,人员!1:1,0)-1,999,1),不用嵌套其他公式,缺点是下拉菜单中会显示空白,显得不美观,如下图所示。

利用数据验证功能,制作动态二级联动下拉菜单的关键在于理解Offset函数,Offset函数的学习可以参考之前分享的文章《Excel函数:灵活运用Offset函数》。
希望这篇文章对你有帮助,您的点赞和收藏是我持续更新文章的最大动力,感谢您的支持。