当我使用“数据验证”选项卡插入数据列表作为下拉列表控件时,收到以下错误。
在“源”选项卡中,我复制并粘贴了以下公式,该公式在单元格上进行测试时效果很好,但是当我将同一公式粘贴到“数据验证”的“源”文本框中时,会弹出错误消息。
公式:
=OFFSET(Table1[[#Headers],[Stage]], MATCH(Invoice_Plan!$D$6,Table1[Project],0),0,COUNTIF(Table1[Project],Invoice_Plan!$D$6),1)
当我按F9按钮查看结果时,它会显示值列表为:
={"Mobilization Advance";"Concept Design ";"Schematic Design";"Detailed Design";"Tender Documents"}
但是,我不确定为什么相同的公式不能用作“数据验证”选项卡中的源。将不胜感激。谢谢
答案 0 :(得分:1)
验证对象接受值列表或包含值列表的命名范围。它不接受动态定义范围的公式。
要变通解决此问题,您可以创建一个动态的命名范围,并使用该范围的名称作为验证的参考。我使用下面的公式创建了一个名为“ ValidationList”的命名范围。
=OFFSET(Formulas!$A$7,0,0,10-COUNTBLANK(Formulas!$A$7:$A$16))
请注意,Formulas!A7:A16实际上是指定范围本身的地址,但更大。该公式的作用是使列表成为可能,只要该列中的值从A7开始就一直存在。在我的示例中,列表限制为最多10个值。您可以将其设置为50或100-任何数字。重要的是10-COUNTBLANK(Formulas!$A$7:$A$16)
中的数字(此处为“ 10”)等于指定范围内的单元数(此处为A7:A16,表示10个单元)。当然,工作表的名称(这里是“公式”)应该是工作簿中已有的工作表。
要将值填充到“ ValidationList”范围内,可以使用类似=IFERROR(IF(Len(Invoice_Plan!$D$6)),Invoice_Plan!$D$6,""),"")
的公式。请注意,您甚至不能使用简单的= Invoice_Plan!$ D $ 6,因为定义“ ValidationList”范围的公式需要空白单元格包含空字符串,以避免将它们包含在验证下拉列表中。
现在,您可以简单地将数据验证中的源设置为=ValidationList
。