首页 热点专区 义务教育 高等教育 出国留学 考研考公

WPS/EXCEL表格制作多级下拉菜单,如何自动跳转?

发布网友 发布时间:2022-04-24 16:58

我来回答

2个回答

热心网友 时间:2022-05-13 16:00

如果二级菜单只有一项,没有必要用菜单,用公式更好(比如Vlookup),当前面的选项变动时公式会自动计算,更改为相应的结果

如果用数据有效性,二级菜单没办法自动变动,除非添加VBA代码

追问我表述的不太清楚,我的1级菜单有5个选项,2级菜单对应1级菜单的5个选择,每个选择里都有3~5个选项。
方案A:现在的问题是,修改1级菜单,2级菜单的选项不会跟随变动。每次都需要手动再选择。希望2级菜单能跟随1级菜单自动变动。
方案B:我试过在2级菜单的选项里加了一条=IF判断1级菜单的选项,虽然达到了我的想法,但是问题在于它在下拉菜单内不会自动显示变化,有没办法让2级菜单即可下拉又可自动变动?

追答

数据有效性,只能判断输入是否有效,一般多级菜单更改前一级菜单只能让后级菜单从“有效”变成“无效”【或者反过来】,不会修改已有的内容。

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)

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com