在不使用 INDIRECT 的情况下使用 table 进行数据验证的非易失性方法

Non-volatile way to use table for data validation without using INDIRECT

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

=tabColor[Color]

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

=INDIRECT("tabColor[Color]")

所以,我有两个问题:

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

顺便说一句,如果您想了解更多关于可变函数的信息,可以在以下位置找到一篇不错的文章 chandoo.org

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