0

我有一个excel问题。假设我有一个如下所示的列表:

Fruits    | Apples   | 1
          | Oranges
          | pears

Vegetables| Corn     | 1
          | Turnips
          | Broccli

因此,我们有 A、B 和 C 列。A 是Fruitsvegetables,B 类型,C 每次A填充 1。我想要做的是创建一个下拉列表,其中 C = 1 直到单元格 C 中的下一个 1。

所以我最终会是这样的:

水果|苹果(与其他水果一起下拉)|1

蔬菜|玉米(与其他蔬菜一起下拉)|1。

注意“|” 是单元格之间的分隔符,以防出现任何混淆。

我希望我的问题对任何好心人的帮助都足够清楚。

非常感谢。

4

1 回答 1

0

我不确定你想把这些下拉菜单放在哪里。但是假设您希望它们在工作簿中的不同工作表上,您可以使用以下宏。

Option Explicit

Sub CreateDropdownsInSheet()
    Dim SourceSheet As Worksheet
    Dim TargetSheet As Worksheet
    Dim i As Double
    Dim DropDownRange As Range

    'Define Source Sheet and Target Sheet
    Set SourceSheet = ActiveWorkbook.Sheets("Sheet1")
    Set TargetSheet = ActiveWorkbook.Sheets("Sheet2")

    'Loops through the source sheet
    For i = 1 To SourceSheet.Cells(SourceSheet.Rows.Count, 3).End(xlUp).Row Step 1
        If SourceSheet.Cells(i, 3).Value = 1 Then
            'Gets range for dropdown
            Set DropDownRange = SourceSheet.Range(SourceSheet.Cells(i, 2), SourceSheet.Cells(i, 2).End(xlDown))

            With TargetSheet.Cells(TargetSheet.Cells(TargetSheet.Rows.Count, 1).End(xlUp).Row + 1, 1)
                'Names group
                .Value = SourceSheet.Cells(i, 1).Value

                'Populates dropdown
                With .Offset(0, 1).Validation
                    .Delete
                    .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, Formula1:="=" & DropDownRange.Parent.Name & "!" & DropDownRange.Address(External:=False)
                    .IgnoreBlank = True
                    .InCellDropdown = True
                    .ShowInput = True
                    .ShowError = True
                End With

                'Selects first element in dropdown list
                .Offset(0, 1).Value = SourceSheet.Cells(i, 2).Value
            End With
        End If
    Next i
End Sub

如果您更改代码中 SourceSheet 和 TargetSheet 变量的工作表名称以适合您的工作簿(我假设目标工作表是一个空工作表)并运行此宏,则应在目标工作表中创建您要查找的列表.

于 2013-10-25T04:56:23.153 回答