在不使用 INDIRECT 的情况下使用 table 进行数据验证的非易失性方法
Non-volatile way to use table for data validation without using INDIRECT
我经常使用INDIRECT函数的一个地方是数据验证。如果我有一个名为 tabColor
的 table 和一个名为 Color
的列,并且我想将其用于 数据验证 ,你会认为你可以使用以下公式将数据验证设置为列表:
=tabColor[Color]
但是,这会导致错误。如果用 INDIRECT
包裹公式,它会起作用:
=INDIRECT("tabColor[Color]")
所以,我有两个问题:
- 在数据验证中使用
INDIRECT
是否会导致单元格被标记为易失性?
- 是否有使用 table 进行数据验证的非易失性方法?
顺便说一句,如果您想了解更多关于可变函数的信息,可以在以下位置找到一篇不错的文章
chandoo.org
- 是的。每当工作簿中的任何计算周期运行时,都会刷新数据验证列表。当在数据验证、命名范围、条件格式规则等中使用可变公式时,这是一种不可见的寄生计算滞后形式。
- 创建一个命名范围,参考:作为
=tabColor[color]
然后使用命名范围的名称作为数据验证列表的 来源:。可悲的是,table 命名约定没有赶上所有应该能够直接使用的功能。
我经常使用INDIRECT函数的一个地方是数据验证。如果我有一个名为 tabColor
的 table 和一个名为 Color
的列,并且我想将其用于 数据验证 ,你会认为你可以使用以下公式将数据验证设置为列表:
=tabColor[Color]
但是,这会导致错误。如果用 INDIRECT
包裹公式,它会起作用:
=INDIRECT("tabColor[Color]")
所以,我有两个问题:
- 在数据验证中使用
INDIRECT
是否会导致单元格被标记为易失性? - 是否有使用 table 进行数据验证的非易失性方法?
顺便说一句,如果您想了解更多关于可变函数的信息,可以在以下位置找到一篇不错的文章 chandoo.org
- 是的。每当工作簿中的任何计算周期运行时,都会刷新数据验证列表。当在数据验证、命名范围、条件格式规则等中使用可变公式时,这是一种不可见的寄生计算滞后形式。
- 创建一个命名范围,参考:作为
=tabColor[color]
然后使用命名范围的名称作为数据验证列表的 来源:。可悲的是,table 命名约定没有赶上所有应该能够直接使用的功能。