【问题标题】:How do I validate a cell using a range from a ListObject in Excel?如何使用 Excel 中 ListObject 的范围验证单元格?
【发布时间】:2012-09-11 01:13:50
【问题描述】:

我正在尝试使用 ListObject 中的一行中的值来验证单元格(List 类型验证)。当我在验证代码中使用 named range 时,它可以工作;但是,如果我将 named range 引用替换为 ListObject 引用,则会引发错误。

您可以使用 ListObject 来验证单元格吗?

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

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

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

Formula1:="=Table2[COL2]"

...我收到一个错误。我也尝试过通过 UI 执行此操作,但它不起作用。

您真的不能使用 ListObject 验证单元格吗?

【问题讨论】:

    标签: excel validation vba listobject


    【解决方案1】:

    好问题。我认为两步流程对您有用:

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

    这在 Excel 2010 中适用于我。数据验证列表会随着表格行的插入和删除而缩小和增长。

    我对“Table2[ROW2]”这个名称有点困惑。在表格/列表对象和数据验证方面,列会更有意义。

    【讨论】:

    • 正是我需要的!谢谢! PS - 我修复了虚构的变量以反映我帖子中的列而不是行。只是快速输入我的想法。谢谢。
    【解决方案2】:

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

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

    添加INDIRECT 是关键区别。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-07
      • 2020-01-29
      • 2019-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多