【发布时间】:2021-12-06 23:07:02
【问题描述】:
我在几个单元格中放置了几个值,如下所示。我已经定义了命名范围:name1 用于 D3,name2 用于 F3,name3 用于 J3,name4 用于 N3。
现在,我想制作一个带有数据验证的单元格;其下拉列表中的值为v1、v2、v3 和v4。
我希望此数据验证的来源基于命名范围 name1、name2、name3 和 name4。结果,
- 即使单元格的位置发生变化,只要命名范围正确,我们确信下拉列表可以包含正确的值。
- 我们可以修改命名范围中的值,下拉列表中的值会自动更新。
有谁知道如何做到这一点?
编辑 1:
为了让这个问题不那么难,让我们假设所有这些命名范围总是在3 行中,而3 行没有其他数据。我试图用=TRANSPOSE(FILTER($3:$3,$3:$3<>"")) 定义另一个命名范围all,结果,单元格中的=all 确实返回了所有值。
但是,我在数据验证源中写了=all,它返回了The Source currently evaluates to an error. Do you want to continue?。点击Yes返回一个空的下拉列表。
我猜可能是因为数据源验证不适用于FILTER 等动态数组函数。有没有人可以尝试另一个具有传统功能的公式(删除列表中的空白)?
【问题讨论】:
-
您将需要一个帮助列,其中堆叠了四个命名范围,然后引用该范围。
-
是否可以不在工作表中显示此帮助列(例如,仅在名称管理器中定义它)?
-
不,它必须在工作表中。但你可以把它放在屏幕外的列中。
-
或者你可以把它放在一个用户看不到的非常隐蔽的工作表上。
-
回应您的编辑。数据验证/条件格式从未与数组类型公式一起使用。它已被广泛宣传为“缺陷”,但微软在引入动态数组时并没有“修复”这个问题。所以不,没有公式可以直接做到这一点。您将需要使用帮助列来做您想做的事情。
标签: excel excel-formula