如何从逗号分隔列表中在Excel中构建下拉列表

时间:2017-04-24 18:43:59

标签: excel vba excel-vba

我有一个包含逗号分隔值列表的单元格,我需要能够将这些值用作验证列表。有没有办法做到这一点? 值列表可以是0到50个值的任何值。

2 个答案:

答案 0 :(得分:0)

可以将一个逗号分隔的字符串从一个单元格拆分为一个没有VBA的单元格列:

复制单元格并在Row1中输入:

=CHOOSE(ROW(),

然后粘贴,),输入并复制以适应。

答案 1 :(得分:0)

这应该有效:

假设您必须处理的工作表名称为“任务”,则源位于单元格A1中,您必须在A2中为同一工作表添加验证列表。

  • 激活VBA
  • 转到VBA编辑器
  • 为Workbook模块

    创建以下代码
    Private Sub Workbook_Open()
    
       AddCSVListValidation "Task", "A1", "A2"
    
    End Sub
    
    Sub AddCSVListValidation(sheet, cellSource, cellTarget)
        txt = ActiveWorkbook.Worksheets(sheet).Range(cellSource).Value
        ActiveWorkbook.Worksheets(sheet).Range(cellTarget) = "Select your values here"
        With ActiveWorkbook.Worksheets(sheet).Range(cellTarget).Validation
            .Delete
            .Add Type:=xlValidateList, Formula1:="a,b,c"
            .IgnoreBlank = True
            .InCellDropdown = True
            .InputTitle = ""
            .ErrorTitle = ""
            .InputMessage = ""
            .ErrorMessage = ""
            .ShowInput = True
            .ShowError = True
        End With
    End Sub
    

结果如下所示 - 每当您打开工作簿时,它都会自动填充。希望这会有所帮助。

您还可以捕获事件以更改任务表,并在A1范围更新的条件下运行代码,以通过调用

来更新验证列表
    AddCSVListValidation "Task", "A1", "A2"

这也允许您将操作扩展到多个源和目标单元格。您需要以.xlsm扩展名保存图书,并在最近的excel版本中启用宏。

enter image description here