如何使用Excel中的ListObject范围validation单元格?

我试图validation一个单元格( 列表typesvalidation)使用ListObject中的行中的值。 当我在我的validation代码中使用命名的范围 ,它的工作原理; 但如果我将指定的范围引用replace ListObject引用,则会引发错误。

你可以使用ListObject来validation单元格吗?

这就是我正在做的,使用命名的范围

With Range("Table1[COL1]").Validation .Delete .Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, Operator:=xlBetween, _ Formula1:="=DEPT_NAMES" ' where DEPT_NAMES is a manually created named range '[...] more stuff goes here End With 

但是,如果我replaceFormula1:=的值Formula1:=并让它指向一个有效的列表对象,如下所示:

 Formula1:="=Table2[COL2]" 

…我得到一个错误。 我也尝试了通过用户界面,这是行不通的。

你真的不能使用ListObjectvalidation单元格吗?

好问题。 我认为一个两步的过程将适用于你:

  1. 创build一个定义为"=Table2[ROW2]"的命名范围
  2. 将您的数据validation列表指向该命名范围。

这在Excel 2010中适用于我。数据validation列表随着表行的插入和删除而缩小和增大。

我有点困惑,名字是“Table2 [ROW2]”。 从表/列表对象和数据validation的angular度来看,列将更有意义。

find其他地方( https://blackatlascreative.com/blog/create-an-excel-data-validation-list-using-a-table/ ):

 Formula1:="=INDIRECT(""Table2[COL2]"")" 

INDIRECT的join是关键区别。