使用表进行数据validation而不使用INDIRECT的非易失性方式

我经常使用INDIRECT函数的一个地方是用于数据validation。 如果我有一个名为Color的列名为tabColor的表,并且我想用它来进行数据validation ,那么您可以将数据validation设置为具有以下公式的列表:

 =tabColor[Color] 

但是,这会导致错误。 如果您使用INDIRECT包装公式,它将起作用:

 =INDIRECT("tabColor[Color]") 

所以,我有两个问题:

  1. 在数据validation中使用INDIRECT会导致单元被标记为volatile?
  2. 有没有一种使用表进行数据validation的非易失性方法?

顺便说一句,如果你想知道更多关于volatile函数的信息,可以在chandoo.orgfind一个很好的文章

  1. 是。 只要工作簿中的任何计算周期运行,数据validation列表就会刷新。 在数据有效性,命名范围,条件格式规则等中使用易失性公式时,这是一种不可见的寄生计算滞后。
  2. 创build一个命名范围指的是: as =tabColor[color]然后使用命名范围的名称作为数据validation列表的Source =tabColor[color] 令人遗憾的是,表格命名约定还没有涉及到应该能够直接使用的所有function。