INDIRECT 给出 #REF!引用外部工作簿的错误,其中使用等号直接引用有效。为什么?

tod*_*ojo 5 microsoft-excel

我参考了另一本看起来像这样的工作簿:

 =INDIRECT(ADDRESS(21,6,1,1,"[Longterm Budget.xlsx]2012"))
Run Code Online (Sandbox Code Playgroud)

INDIRECT 参数的结果ADDRESS(21,$A$1,1,1,"[Longterm Budget.xlsx]2012"), 是'[Longterm Budget.xlsx]2012'!$F$21。如果我在前面放一个等号

 ='[Longterm Budget.xlsx]2012'!$F$21
Run Code Online (Sandbox Code Playgroud)

...它返回所需的引用。但是,像这样将相同的参数传递给 INDIRECT

 =INDIRECT("'[Longterm Budget.xlsx]2012'!$F$21")
Run Code Online (Sandbox Code Playgroud)

...导致引用错误。知道为什么吗?

Pet*_*ert 10

INDIRECT不幸的是,仅适用于工作簿内或计算期间打开的工作簿。如果外部工作簿关闭,则会导致#REF!错误。

背景:对于普通的外部链接,Excel 不仅存储外部单元格的地址,还存储文件保存版本中的最后一个已知值。这样,当打开文件时,Excel 可以计算整个工作簿,即使外部源不可用。

INDIRECT然而,它是一个易变的函数,即每次运行计算时 Excel 都必须计算它(而“正常”函数只有在任何前驱单元格发生变化时才需要重新计算)。因此,Excel 无法存储引用的值,从而导致#REF!错误。