发布网友 发布时间:2022-04-24 16:58
共2个回答
热心网友 时间:2022-05-13 16:00
如果二级菜单只有一项,没有必要用菜单,用公式更好(比如Vlookup),当前面的选项变动时公式会自动计算,更改为相应的结果
如果用数据有效性,二级菜单没办法自动变动,除非添加VBA代码
追问我表述的不太清楚,我的1级菜单有5个选项,2级菜单对应1级菜单的5个选择,每个选择里都有3~5个选项。追答
数据有效性,只能判断输入是否有效,一般多级菜单更改前一级菜单只能让后级菜单从“有效”变成“无效”【或者反过来】,不会修改已有的内容。
VBA可以实现,但是需要保存xlsm文件,自己用一般还没什么问题,文件发给别人,可能还要他们设置安全性
VBA的示例:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address = "$E$2" Then
With Range("F2").Validation
.Delete
Application.EnableEvents = False
Select Case Target.Value
Case "手机"
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="华为,小米,苹果"
Range("F2").Value = "华为" '这句实现自动变动
Case "电脑"
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="联想,戴尔,苹果,华硕" '这里也可以来自单元格区域
Range("F2").Value = "联想"
Case "空调"
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="格力,美的,奥克斯,小米"
Range("F2").Value = "格力"
End Select
Application.EnableEvents = True
End With
Else
End If
End Sub
热心网友 时间:2022-05-13 17:18
在数据有效性里选序列,可以用利偏移函数offset(),找到对应范围取值,公式。
偏移公式:=OFFSET($D$4,2,MATCH(A6,$E$5:$G$5,0),3,1)