使用这个命名范围进行Listvalidation有什么问题?

我有一列数据会随着时间的推移添加更多的值。 我想在另一个工作表上使用此列的值进行列表validation,以便下拉选项反映列的当前内容。 我试着用下面的公式创build一个命名范围ListColumn

 =ADDRESS(3,12,1,1,"DataSource")&":"&ADDRESS(COUNTA('DataSource'!$L:$L),12,1,1,"DataSource") 

当我尝试添加validation单元格,select允许:“列表”并在公式框中input=ListColumn ,我得到此错误信息:

 The list source must be a delimited list, or a reference to a single row or column. 

我尝试在INDIRECT()包装整个公式,并且在名称pipe理器屏幕上没有生成错误,当我试图添加validation时,我得到了这个错误信息:

 The Source currently evaluates to an error. Do you want to continue? 

我不确定这里有什么问题。 两个ADDRESS()调用的第二个参数是相同的,所以范围地址应该引用单个列。 我如何设置我正在寻找的dynamic列表validation?

编辑:debugging这是产生一些奇怪的行为。 当我尝试使用Range("ListColumn").SelectselectListColumn时,我不断收到运行时错误。 消息是对象'_Global'的方法'范围'失败。

Entering =ListColumn返回: 'DataSource'!$L$3:'DataSource'!$L$65 ,这是期望的值。

此外,当我input公式=COUNTA(ListColumn)它返回“1”,但是当我input公式=COUNTA('DataSource'!$L$3:'DataSource'!$L$65)它返回正确的值“ 63" 。 =COUNTA(INDIRECT(ListColumn))也返回“1”。

我相信这个问题可能是在第二个ADDRESS块中包含DataSource作为文本表名称。 我在执行上述步骤时所获得的行为完全相同,但似乎适用于此:

 =INDIRECT(ADDRESS(3,12,1,1,"DataSource")&":"&ADDRESS(COUNTA(DataSource!$L:$L),12,1,1)) 

然后,您可以按照上面所做的操作,并在下拉菜单中使用它。 我最好的假设是,由于您已经在地址的第一部分中定义了工作表,所以您不需要在第二部分中提供它(如果您这样做会导致错误)。 如果你从程序的angular度来思考它,这是有道理的(我认为:)),因为很难/不可能在多个工作表中引用范围,因此语法可能不允许第二个工作表在冒号后指定(即使是相同的)。 这只是猜测虽然(可能是错误的),所以希望解决scheme:)

在这里输入图像说明在这里输入图像说明