如何根据表值填充单元内下拉列表?

时间:2020-04-27 17:49:09

标签: excel vba listobject

我正在尝试使用VBA创建动态的单元内下拉列表。目前,我已经根据输入的值填充了下拉列表。但是,随着我预见到该程序的用途将不断增长,我希望使下拉列表动态化。有没有办法让VBA遍历表并根据第1列中的值填充下拉列表?

下面是我当前拥有的代码;如您所见,基于我在其中硬编码的值,公式值是静态的:

Sub Dropdown_Setup()
'Setup appropriate template dropdowns on 'template' sheet

    Set wB = ThisWorkbook
    Set tempSht = ThisWorkbook.Sheets("Template")

'Populate 'machine' dropdown
    With tempSht.Range("$B$15").Validation
        .Delete
        .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
            Formula1:="H1 - EOS M280, H2 - SLM, H4 - CL M2, H5 - EOS M400, H6 - SLM 2.0"
        .IgnoreBlank = True
        .InCellDropdown = True
    End With

End Sub

任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

您可以遍历列表对象第一列中的每个单元格,并构建一个逗号分隔的字符串,该字符串可以分配给library(dplyr) df %>% group_by(C0) %>% mutate(C4 = C2[which.max(C1)]) # A tibble: 15 x 4 # Groups: C0 [3] # C0 C1 C2 C4 # <dbl> <dbl> <fct> <fct> # 1 1 0 A D # 2 1 2 B D # 3 1 3 C D # 4 1 6 D D # 5 1 2 E D # 6 2 0 A D # 7 2 0 B D # 8 2 4 C D # 9 2 9 D D #10 2 7 E D #11 3 1 A C #12 3 2 B C #13 3 7 C C #14 3 4 D C #15 3 2 E C 进行验证。

我假设Sheet2包含您的列表对象,并且该列表对象名为Table1。相应地更改这些名称。

此外,您已经定义了Formula1,但是您没有在代码中使用它。既然不是真正必要,我将其删除。

wB