我正在尝试使用命名列表在Excel中设置一个下拉菜单,但我想自己编写命名变量的条目。
所以,假设我将一个命名列表(称为TestVar)定义为(使用名称管理器)
={"A","B"}
(或者用分号创建一个列),我不能用它来进行数据验证。所以,如果我在数据验证下选择“list”选项,并写入
=TestVar
作为源,我得到“源当前评估错误。”信息。
我不明白为什么TestVar不是有效列表,因为它既适用于INDEX函数,也适用于数组公式。
另外,我知道我可以写
A,B
作为设置我的数据验证时的源代码,这给了我想要的行为,但我认为将它定义为命名列表更有意义,以防一个人需要附加到列表中指向将来,并在文档中多次引用该列表。
编辑:
忘记提及我使用Excel 2013。
答案 0 :(得分:0)
如果你录制一个宏,你会看到列表只是一串用逗号分隔的值。这将做你想要的:
Sub Macro1()
Dim ValidationFormula As String
ValidationFormula = "1,2"
With Selection.Validation
.Delete
.Add Type:=xlValidateList, Formula1:=ValidationFormula
End With
End Sub
编辑:
要将数据验证的来源设置为Excel名称,该名称需要指向命名范围。我不知道如何让它只是引用设置为"1,2
或=1,2
的名称。
下面我定义了一个引用C2:C5
的命名范围ValidationList。然后在A2中我打开了数据验证对话框并指向了命名范围:
请注意,如果你这样做,你会希望它是dynamic named range。另请参阅此Chandoo post。