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

Vba 如何从逗号分隔的列表在Excel中构建下拉列表,vba,excel,Vba,Excel,我有一个单元格,其中包含一个逗号分隔的值列表,我需要能够使用这些值作为验证列表。有没有办法做到这一点? 值列表的长度可以是0到50个值。可以将逗号分隔的字符串从一个单元格拆分为一列不带VBA的单元格: 复制单元格并在第1行中输入: =CHOOSE(ROW(), 然后粘贴,),输入并复制到合适的位置。这应该可以: 假设您必须处理的工作表的名称为“任务”,源位于单元格A1中,您必须在A2中为同一工作表添加验证列表 激活VBA 转到VBA编辑器 为工作簿模块创建以下代码 Private Sub W

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

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

复制单元格并在第1行中输入:

=CHOOSE(ROW(),
然后粘贴,
,输入并复制到合适的位置。

这应该可以:

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

  • 激活VBA
  • 转到VBA编辑器
  • 为工作簿模块创建以下代码

    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版本中启用宏


您需要将内容拆分为各自的单元格。Excel可以做到这一点。如果列表不太大,只需使用验证数据列表,在源代码中写入0,2,5,7,50@KenWhite你的链接让我准确地找到了我所需要的,谢谢。你怎么能对AD1到AD100这样的特定范围做同样的事情呢?。那么公式是什么呢?。你能告诉我“任务”、“AD1:AD100”和“目标细胞”吗