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"} 

不是专家,但这是我的最好的破解。