您的位置首页生活百科

Excel二级联动动态下拉菜单怎么做

Excel二级联动动态下拉菜单怎么做

的有关信息介绍如下:

Excel二级联动动态下拉菜单怎么做

二级联动下拉菜单经典做法是采用数据验证(数据有效性)+定义名称+INDIRECT函数,但用这种方法制作的下拉菜单缺乏扩展性,不能自动添加新的菜单项;并且修改麻烦,如果菜单项名字有变动,必须修改定义名称或引用位置。

为弥补经典静态二级下拉菜单的不足,经过研究自创了动态二级联动下拉菜单,下面给大家分享下。如果对大家有所帮助,还请点赞支持,您的支持是我最大的动力,谢谢。

动态二级联动下拉菜单采用方法:数据验证(数据有效性)+OFFSET+COUNTA+MATCH函数。

首先来看下我们的数据源,是关于险种分类和每个分类下面的产品数据,需要做一个选了险种类型后,能自动出现该险种类型下面对应产品的二级菜单。

第一步:制作一级下拉菜单

选中需要设置一级下拉菜单的单元格,接着找到【数据】选项卡,点击【数据验证】按钮,进入“数据验证”设置页面。

“设置”页签下面的验证条件“允许(A)”选择“序列”,“来源(S)”填入公式“=OFFSET(数据源!$A$1,0,0,1,COUNTA(数据源!$1:$1))”,点击【确定】按钮,完成设置。

公式解析:

“=OFFSET(数据源!$A$1,0,0,1,COUNTA(数据源!$1:$1))”是组合嵌套函数,用于确定一级菜单下拉选项区域。

OFFSET函数:以指定的引用为参照系,通过给定偏移量得到新的引用范围。

该函数有五个参数,第一个参数是参考单元格;第二、三个参数分别是相对于参考单元格行和列方向的移动数(偏移量);第四、五个参数是指行和列的扩展,即由前面参数确定了一个新的参考点,那么以这个新的参考点为准,需要取多少行和多少列的数据范围。以该例来看,我们以“数据源$A$1”为参考系,在行和列上都不需要位移,所以第二和第三参数都为0,由于只取一行,所以第四参数为1,但是第五个参数列数是不确定的,只能通过COUNTA函数。

COUNTA函数:返回参数列表中非空的单元格个数

所以设置公式COUNTA(数据源!$1:$1),可以得出第一行有多少个非空单元格,也就确定了一级菜单该取的列数。

经过上一步操作,我们已经成功完成一级菜单设置,菜单效果如下。

第二步:制作二级下拉菜单

选中“B2”单元格,点击【数据】选项卡下面的【数据验证】按钮,进入“数据验证”设置页面。

“设置”页签下面的验证条件“允许(A)”选择“序列”,“来源(S)”填入公式“=OFFSET(数据源!$A$1,1,MATCH(A2,数据源!$1:$1,0)-1,COUNTA(OFFSET(数据源!$A$1,1,MATCH(A2,数据源!$1:$1,0)-1,1000,1)),1)”,点击【确定】按钮,此时由于A2单元格没有值,会出现错误提示,忽略错误提示,点击【是】按钮,即可完成设置。

关于二级菜单公式解析:

二级菜单仍延用一级菜单思路,采用OFFSET函数确定菜单取值区域,具体参数说明,请参考一级菜单公式解析,在此就不再赘述。

我们重点来看二级菜单PFFSET参数的第三和第四参数。

第三参数:MATCH(A2,数据源!$1:$1,0)-1

MATCH函数返回A2单元格对应的数据源列数,比如返回的值是2,那么以数据源!$A$1只需要向右移动一列,所以要将MATCH返回的值减去1,才是真正需要移动的列数。

第四参数:COUNTA(OFFSET(数据源!$A$1,1,MATCH(A2,数据源!$1:$1,0)-1,1000,1))

采用嵌套函数,里面的OFFSET函数主要是确定一个大概的二级菜单选项,由于二级菜单事先不清楚会有多少项,所以里面的OFFSET函数第四参数,给了足够大的数值1000,以确定一个1行1000列的数据范围,但1000列肯定会有空格,这是用COUNTA函数就可以确定有值的单元格数目。

最后实现的效果,我们看到可以动态添加一级和二级菜单选项。

动态联动下拉菜单有点:

1、具备扩展性,可以随时添加修改菜单字典;

2、修改简单,新增一级和二级菜单项放置到对应区域,下拉菜单会自动扩展。