使用表进行数据验证的非易失性方式,无需使用 INDIRECT

cca*_*mpj 4 excel excel-formula

我经常使用 INDIRECT 函数的地方之一是数据验证。如果我有一个名为 的表,tabColor其中有一列名为Color,并且我想将其用于数据验证,您可能会认为可以使用以下公式将数据验证设置为列表:

=tabColor[Color]
Run Code Online (Sandbox Code Playgroud)

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

=INDIRECT("tabColor[Color]")
Run Code Online (Sandbox Code Playgroud)

所以,我有两个问题:

  1. 在数据验证中使用是否会INDIRECT导致单元格被标记为易失性?
  2. 是否有一种非易失性的方法来使用表进行数据验证?

顺便说一句,如果你想了解更多关于易失性函数的信息,可以在chandoo.org找到一篇不错的文章

小智 5

  1. 是的。每当工作簿中的任何计算周期运行时,数据验证列表都会刷新。当在数据验证、命名范围、条件格式规则等中使用易失性公式时,这是一种不可见的寄生计算滞后形式。
  2. 使用“引用:”创建命名范围,然后使用命名范围的名称作为“数据验证”列表的“源”:。遗憾的是,表命名约定并没有跟上它们应该能够直接使用的所有功能。=tabColor[color]