2017-04-24 294 views
1

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

+1

你需要的内容拆分为自己的细胞。 Excel的[文本到列](https://support.office.com/zh-cn/article/Split-text-into-different-columns-with-the-Convert-Text-to-Columns-Wizard-30b14928 -5550-41f5-97ca-7a3e9c363ed7)可以做到这一点。 – tigeravatar

+0

http://stackoverflow.com/q/11012619/62576 –

+0

如果列表不是太大,只需在源代码中使用验证数据,列表0,2,5,7,50 – yass

回答

0

是可能的用逗号分隔的字符串出一个小区的分割成单元的列没有VBA:

复制细胞和在ROW1输入:

=CHOOSE(ROW(), 

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

0

这应该工作:

假设你有工作在您的工作表的名称是“任务”,来源是在单元格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 
    

结果如下所示工作簿模块下面的代码 - 无论何时打开工作簿系统将自动-populated。希望这可以帮助。

您还可以陷阱任务表变化的事件和A1范围的更新状态运行的代码调用

AddCSVListValidation "Task", "A1", "A2" 

更新验证列表这也可以让你扩大经营到多源和目标细胞。您需要使用.xlsm扩展名保存该书,并在最新的Excel版本中启用宏。

enter image description here