我想借助简单列表来验证单元格值。但事实证明,扩展此列表非常困难,因为每次添加新值时都需要更新验证源范围,如图所示。
我的问题是:我可以将动态表引用放入“源”字段吗?如果可以,那么我该怎么做?
谢谢。
答案1
从 Excel 2010 开始,您不能直接使用结构化引用作为数据验证的源列表。但是,您可以为结构化引用定义一个名称,并使用这个新名称。
例如,如果我有一个名为的单列表Table1
,其中包含一个名为的列Acceptable Values
,我可以ValidValues
使用结构化引用定义一个新名称Table1[Acceptable Values]
。在数据验证列表的源字段中,我可以输入=ValidValues
答案2
回答你的问题:
我可以将动态表引用放入“源”字段吗?如果可以,那么我该怎么做?
是的!就像这样...
使用函数直接从数据验证源字段引用表列INDIRECT
。
示例数据验证来源:
=INDIRECT("Table1[MyColumn]")
但请小心:对表/列引用名称的任何更改都不会神奇地更新!
参考
答案3
我可以看到两种方法可以做到这一点:
使用命名范围
C1:C6
在菜单栏上选择,转到插入->姓名->定义,输入范围的名称(例如,“ValidationList”)。在数据验证窗口中,来源字段应设置为=ValidationList
。
每当你将项目添加到列表中时你需要重新审视插入->姓名->定义窗口中,从列表中选择命名的项目并更改指的是值。
所有引用=ValidationList
将自动指向新修改的列表。
扩展列表的中心
在此示例中,您使用$C$1:$C$6
列表区域,如果您在中间此列表(即选择C4
、右键单击、插入、向下移动单元格),则范围应该为您扩大。
答案4
我想延长DMA57361的答案。使用命名范围,但使该范围动态化,以便当列表增长或收缩时,动态范围会按照您的需要扩展和收缩。
如果您有一个列表,从 C1 开始,到 C6 结束,则以下代码将允许它扩展和收缩。一旦单元格留空,列表就会停止。
=OFFSET($C$1, 0, 0, COUNTA($C:$C),1)
将此公式放入命名范围并将其命名为 ValidationList。在数据验证对话框中选择列表,然后输入=ValidationList
作为源。
创建动态命名范围的一个非常好的资源:http://www.ozgrid.com/Excel/DynamicRanges.htm