在Excel中定义自定义命名列表以用于数据验证

时间:2013-10-12 14:57:30

标签: excel

我正在尝试使用命名列表在Excel中设置一个下拉菜单,但我想自己编写命名变量的条目。

所以,假设我将一个命名列表(称为TestVar)定义为(使用名称管理器)

={"A","B"}

(或者用分号创建一个列),我不能用它来进行数据验证。所以,如果我在数据验证下选择“list”选项,并写入

=TestVar

作为源,我得到“源当前评估错误。”信息。

我不明白为什么TestVar不是有效列表,因为它既适用于INDEX函数,也适用于数组公式。

另外,我知道我可以写

A,B

作为设置我的数据验证时的源代码,这给了我想要的行为,但我认为将它定义为命名列表更有意义,以防一个人需要附加到列表中指向将来,并在文档中多次引用该列表。

编辑:

忘记提及我使用Excel 2013。

1 个答案:

答案 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中我打开了数据验证对话框并指向了命名范围:

enter image description here

请注意,如果你这样做,你会希望它是dynamic named range。另请参阅此Chandoo post