返回目录:excel表格制作
在平时工作学习中,经常会用到Excel的下拉菜单功能,这一功能的实现方法也较为简单。但是,如果遇到需要使用二级下拉菜单或多级下拉菜单的情况,就会比较棘手。
实现二级下拉菜单的方法也有很多,本文为大家介绍一种,供大家参考,我们将以下面的表格为例来展开。
1、首先,我们需要做一些准备工作:对每一个项目建立一个名称索引。第一级下拉菜单的内容,选中商品类别,然后在左上角的名称位置,将名称改为我们自定义的名称“商品类别”, 记得按回车确定。
2、接下来选中二级下拉菜单的项,同样在左上角自定义它的名称,名称要对应商品类别中的项。将剩余家用电器、电脑办公的项也设置好。
3、然后是三级菜单的项,自定义每一个小项的名称。名称要跟二级菜单中的项对应。
4、好,准备工作完成。现在设置一级菜单。选中B5单元格,打开数据-数据有效性。
5、在弹出的对话框中,“允许”选择 序列,“来源”中输入“=商品类别”,商品类别即我们之前自定义的名称,最后确定。
6、这时我们看到,商品栏下可以通过下拉菜单选择内容了。
7、接下来要设置每一项商品的二级下拉菜单。
选中C5单元格,打开数据有效性,选择序列,来源里输入“=INDIRECT(B5)” (indirect函数的含义引用,并显示其内容),然后确定。这样,C5单元格的内容就会根据B5的内容去索引自定义的名称来显示。
根据上一步的同样的方式,设置品牌下的下拉菜单,注意数据有效性“来源”中输入“=INDIRECT(C5)”。最终效果如下:
到现在,三级下拉菜单就设置完成了。多级下拉菜单的原理是一样的。
但是,有一个问题,当我们修改前一级下拉菜单时,很容易由于疏忽,导致下级与前一级类型不符。
这时,我们希望每种类别能有一个默认的选项,会随着第一级下拉菜单变化时,自动填充。这种要求救只能通过EXCEL VBA来实现了。在sheet1上右击,点击查看代码。
在代码窗内,输入以下代码:
Private Sub Worksheet_Change(ByVal Target As Range) ‘当工作表变化时
If Target.Row = 5 And Target.Column = 2 Then
‘如果变化的目标是B5(第5行,第2列),下边用if语句为每一项设置默认值
If Range("B5") = "手机数码" Then
Range("C5") = Range("F6")
ElseIf Range("B5") = "家用电器" Then
Range("C5") = Range("I6")
ElseIf Range("B5") = "电脑办公" Then
Range("C5") = Range("K6")
End If
End If
If Target.Row = 5 And Target.Column = 3 Then
‘如果变化的目标是C5(第5行,第3列),下边用case语句设置默认值(采用if还是case,请灵活掌握)
Select Case Range("C5")
Case "手机"
Range("D5") = Range("F7")
Case "存储卡"
Range("D5") = Range("G7")
Case "移动电源"
Range("D5") = Range("H7")
Case "微波炉"
Range("D5") = Range("I7")
Case "空调"
Range("D5") = Range("J7")
Case "平板"
Range("D5") = Range("K7")
Case "笔记本"
Range("D5") = Range("L7")
End Select
End If
End Sub
有兴趣,有需要的试试吧。仅供交流,大家多批评指正。谢谢!