INDEX(INDIRECT(“DefinedName”),1)=#REF,而INDEX(DefinedName,1)工作
在一个Excel工作簿中,我从另一个选项卡引用一个已定义的名称(以获得相关的数据validation)。 直接访问定义的名字是可行的,但是通过INDIRECT
访问它不会。
=INDEX(DefinedName,1)
返回范围的第一个值
=INDEX(INDIRECT("DefinedName"),1)
返回#REF!
我也试过了
=INDEX(INDIRECT("SheetName!DefinedName"),1)
,但是它也返回#REF!
示例文件可以在这里下载。
托马斯,
我以前没来过
它表明INDIRECT
和dynamic范围名称是不兼容的。 这里有一个从迪克斯博客有用的参考
不是一个答案,但它可能有一个事实,你的命名范围是返回一个数组而不是一个单元格引用(在这种情况下{"VALL";"GENADMIN";"HOSP";"CELLAR"}
) 。
您可以通过删除命名范围并将其replace为其实际公式来复制该错误,然后F9 '公式:
=INDIRECT(OFFSET(Defaults!$C$1,1,0,COUNTA(Defaults!$C:$C)-1)) =INDIRECT({"VALL";"GENADMIN";"HOSP";"CELLAR"})
由于Excel需要对表单范围进行某种引用,因此无法将该数组parsing为特定的任何内容(按F9再次输出) ={#REF!;#REF!;#REF!;#REF!}
)。
INDEX
公式的工作原理是因为它可以处理数组引用:
=INDEX(OFFSET(Defaults!$C$1,1,0,COUNTA(Defaults!$C:$C)-1),1) =INDEX({"VALL";"GENADMIN";"HOSP";"CELLAR"},1) ={"VALL"}
不是专家,但这是我的最好的破解。