当前位置:首页 > 软件开放 > 正文内容

展开收缩下拉菜单代码(设置下拉框向下展开)

软件开放6个月前 (07-09)408

编按:

一说起下拉菜单,我相信大多数有点Excel基础的都会做。但今天我们来点不一样的下拉菜单,从青铜级别到王者级别,应有尽有,赶紧来看一看吧!

下面,我们将按照从简单到高级来给大家介绍如下几种下拉菜单。

1、最简单的下拉菜单

2、名称制作下拉菜单

3、动态下拉菜单(没有空白选项的)

4、多内容下拉菜单,填充时拆分内容

5、智能录入下拉菜单,填充时拆分内容

注意:今天主要说的内容是“数据验证(Validation)”的内容,不涉及控件使用,各个Excel版本都可以使用。

【正文】

1、青铜(最简单的下拉菜单)

制作方法:

在工具栏中,点击“数据验证”功能;

展开全文

在弹出的窗口中,按下图:

在【允许】中选择“序列”,在【来源】中输入“男,女”,按确定键完成操作。

注意:无论选填的内容是什么,都要用“英文的逗号间隔”,而且不需使用双引号。

2、白银

方法1:在数据验证窗口中,如下设置

【来源】处可以直接选择单元格区域,即可把这部分的内容作为下拉菜单的内容。

方法2:我们也可以使用名称管理器来操作:

选择A2:A17单元格,然后在【名称框】中编辑一个名称:例如我们输入“科学家”,然后【按回车结束编辑】

然后在数据验证窗口中如下图设置;

3、黄金——动态下拉菜单

如果我们的选择项数量不确定,随着添加或者删除,下拉选项也要随之增加减少,如下图所示:

按CTRL+F3组合键,打开【名称管理器】窗口,新建一个名称“选项”,按下图设置名称内容:

引用位置的函数:=OFFSET(黄金!$A$2,,,COUNTA(黄金!$A$2:$A$997),)

使用COUNTA函数确定区域中的内容数量,然后在使用数据验证创建下拉菜单即可。

如果A列数据是使用函数后得到的,例如把某列数据去重,如下图:

A2单元格的函数为:

{=IFERROR(INDEX($A$2:$A$38,SMALL(IF(MATCH($A$2:$A$38,$A$2:$A$38,0)=ROW($1:$37),ROW($1:$37),9^9),ROW(B1))),"")}

这个函数是万金油,之前的教程中有解释的,就不在这里赘述了。然后下拉A2单元格填充至A18,就得到了去重后的内容,然后再使用名称即可引用到数据验证中。

但是要注意:表中从B8:B18都是IFERROR函数容错后的空格,那么刚才用COUNTA函数引出选项个数的方式就不正确了,我们换一个写法即可,如下:

函数如下:

=OFFSET(黄金!$B$2,,,COUNTA(黄金!$B$2:$B$18)-COUNTBLANK(黄金!$B$2:$B$18),)

用COUNTA-COUNTBLANK的方式确定应该取多少个选项内容。

截止到此,【下拉选填菜单】的操作方法,配合【函数】和【自定义名称】还可以适应工作,但是已经显得力不从心,因为随着数据的变化,对于函数和自定义名称的调整是在所难免的。那么【更高级别的下拉选填菜单】我们继续看。

4、钻石级别——多内容下拉菜单,填充时拆分内容

下拉菜单选择项包含多个不同属性的内容,选填后自动填入多个单元格。这个方式是使用VBA操作的,代码如下:

Private Sub Worksheet_Change(ByVal Target As Range) '''单元格值改变,触发事件

If Target.Column = 4 And Target.Count = 1 Then '''判断是否在D列,选择一个单元格

With Target '''使用这个单元格

s = .Text '''单元格的值赋值给一个变量s

.Resize(1, 2) = Split(s, ":") '''单元格扩展1行2列,然后把用Split函数按冒号拆分的数组赋值到单元格区域

End With '''with结束语句

End If '''结束判断

End Sub '''工程结束

Private Sub Worksheet_SelectionChange(ByVal Target As Range) '''选择单元格改变,触发事件

If Target.Column = 4 And Target.Count = 1 Then '''判断是否在D列,选择一个单元格

With Sheets("钻石")

s = Join(Application.Transpose(.Range("A2:A" .[A65000].End(3).Row)), ",") '''将A列从A2开始,有值的单元格Join成一个字符串,用英文逗号间隔

End With

With Selection.Validation '对所选择的单元格,创建数据有效性

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:=s

.IgnoreBlank = True '设置单元格 允许空值

.InCellDropdown = True '提供下拉列标

End With

End If '结束判断

End Sub '''工程结束

按下图粘贴或者编写代码亦可。

5、王者——智能录入下拉菜单,填充时拆分内容

同学们做过多级联动的下拉菜单吗?你是如何做的呢,按首行批量创建自定义名称,然后再INDIRECT?

这种方法对于简单的数据源还是可以采用的,但是对于比较多的内容就不是很方便,例如我们今天的这份数据源——“全国【省、市、县 三层】的智能下拉填充功能”

如果同学们用传统方式做的话,自定义名称要做多少呢?

下面看看作者E图表述制作后的效果吧:

这也是用VBA做的,VBA可以做很多日常不敢想想的内容,也只有VBA才能做出高级的功能。不说废话,代码如下:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 7 And Target.Row = 2 Then '''如果被改变值的单元格7行2列【G2】单元格时

With Sheets("王者") '''使用《王者》工作表

arr = .Range("A2:C" .[A100000].End(3).Row) '''将从A2单元格开始到A列已使用的末行结束的单元格区域赋值数值arr

s = Target.Text '''将被操作单元格的值赋值给变量s

If s "" Then '''如果s不为空值

展开收缩下拉菜单代码(设置下拉框向下展开)

For i = 1 To UBound(arr) '''循环数组arr

st = arr(i, 1) "|" arr(i, 2) "|" arr(i, 3) '''将省市县内容合并,并且用|间隔

If st Like "*" s "*" Then '''如果st字符串包含s变量的内容

svd = svd st "," '''将st赋值给svd变量,并用英文逗号间隔,作为下拉菜单的内容

End If

Next i

End If

With .Range("G3").Validation '对G3单元格创建数据有效性

.Delete

.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:= _

xlBetween, Formula1:=svd

.IgnoreBlank = True '设置单元格 允许空值

.InCellDropdown = True '提供下拉列标

End With

.[G3] = "" '''G3单元格初始值为空

End With

End If

If Target.Column = 7 And Target.Row = 3 And Target.Text "" Then '''如果G3单元格的值被改变,且值不为空时

With Sheets("王者")

a = .[H100000].End(3).Row + 1 '''确定H列中为空的第一行

.Cells(a, 8) = Split(Target.Text, "|")(0) '''Split方法拆分下拉菜单的内容,将第1个值放入第8列的末行空白行

.Cells(a, 9) = Split(Target.Text, "|")(1) '''同上,放入第2个值

.Cells(a, 10) = Split(Target.Text, "|")(2) '''同上,放入第3个值

'''注意:Split方法拆分后,是一个一维数组。vba中的内存数组序号默认是从0开始计数的

.[G3] = "" '''G3单元格再归零

End With

End If

End Sub

不需自定义名称,不需多级联动的大量数据验证,这将极大的节省EXCEL的内存,大大提高了运行的效率,同时一级选择、多级录入的方式也节省了操作的环节。

写在最后:王者只是人间的强者,而这世间还有更高的存在。人外人、天外天,EXCEL之外有EXCEL,除开上面这种“下拉菜单”,我们还有更高级别的,大家想不想看呢?

做Excel高手,快速提升工作效率,部落窝教育《一周Excel直通车》视频和《Excel极速贯通班》直播课全心为你!

学习交流请加微信:hclhclsc进微信学习群。

相关推荐:

如何制作智能的下拉菜单?输入数据模糊匹配对应的下拉选项

最简单的多级下拉菜单制作方法,不需要定义名称

别怕,VBA入门级教程来了,条件语句很简单!

八大查找函数公式,轻松搞定数据中的多条件查找

版权申明:

本文作者E图表述;同时部落窝教育享有专有使用权。若需转载请联系部落窝教育。

扫描二维码推送至手机访问。

版权声明:本文由飞速云SEO网络优化推广发布,如需转载请注明出处。

本文链接:http://muyuzhen.com/post/118102.html

分享给朋友:

“展开收缩下拉菜单代码(设置下拉框向下展开)” 的相关文章

体育直播源码群(体育网站源码)

体育直播源码群(体育网站源码)

本篇文章给大家谈谈体育直播源码群,以及体育网站源码对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、直播APP源码实现直播都有哪些流程需要注意? 2、谁有体育直播源码?发几个。365262049@qq.com 3、自己怎么直播体育比赛 直播APP源码实现直播都有哪...

如何在剪映上传自己制作的模板(怎么把作品上传到剪映,自己做的模板怎么上传到剪映)

如何在剪映上传自己制作的模板(怎么把作品上传到剪映,自己做的模板怎么上传到剪映)

本篇文章给大家谈谈如何在剪映上传自己制作的模板,以及怎么把作品上传到剪映,自己做的模板怎么上传到剪映对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、剪映专业版如何将视频嵌入模板 2、剪映怎么做模板让别人用? 3、剪映怎样做模板出售 4、用剪映怎样制作放假通知模...

web前端高级面试题2021(2021年web前端面试题)

web前端高级面试题2021(2021年web前端面试题)

今天给各位分享web前端高级面试题2021的知识,其中也会对2021年web前端面试题进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录一览: 1、有哪些经典的 Web 前端或者 JavaScript 面试笔试题 2、面试web前端的工作,会被问到什么问题 3、前...

水果店怎么装修好看(水果店怎么装修好看又实用)

水果店怎么装修好看(水果店怎么装修好看又实用)

本篇文章给大家谈谈水果店怎么装修好看,以及水果店怎么装修好看又实用对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、开水果店怎样装修 2、怎样设计装修一家水果店? 3、水果店装修得有特色,应该怎么样装修? 4、10平方水果店怎么装修装饰、装修有哪些技巧 开水果...

木马软件盗取通讯录后被威胁(木马软件盗取通讯录卸载后还有病毒吗)

木马软件盗取通讯录后被威胁(木马软件盗取通讯录卸载后还有病毒吗)

本篇文章给大家谈谈木马软件盗取通讯录后被威胁,以及木马软件盗取通讯录卸载后还有病毒吗对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、手机通讯录被盗,还被威胁怎么办 2、手机通讯录号码被人利用病毒应用窃取了,并威胁机主索要钱财? 3、通讯录被盗取了被威胁怎么办...

源码熊官网下载(源码熊编程网站)

源码熊官网下载(源码熊编程网站)

本篇文章给大家谈谈源码熊官网下载,以及源码熊编程网站对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。 本文目录一览: 1、昨天给孩子报名了源码熊少儿编程,但是别人说现在的少儿编程都是玩游戏,学不到东西,真的是这样吗? 2、我小侄子7岁,家里想要让他学习编程,家附近有一个叫源码熊少儿编程,有...