INDIRECT 引用外部工作簿时出现 #REF! 错误,而使用等号进行直接引用则有效。为什么?

INDIRECT 引用外部工作簿时出现 #REF! 错误,而使用等号进行直接引用则有效。为什么?

我引用了另一个如下所示的工作簿:

 =INDIRECT(ADDRESS(21,6,1,1,"[Longterm Budget.xlsx]2012"))

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

 ='[Longterm Budget.xlsx]2012'!$F$21

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

 =INDIRECT("'[Longterm Budget.xlsx]2012'!$F$21")

...导致引用错误。知道原因吗?

答案1

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

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

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

答案2

好的,我刚刚在 StackOverflow 上发布了这个帖子...我希望这不是重复发布...

这是有关 Office 2010 的一种恐龙方法。

使用连接方法(组合文本的“&”方法)写下您想要的完整地址。

对您需要的所有地址执行此操作。它应该看起来像:

="="&"'\FULL NETWORK ADDRESS 包括 [电子表格名称]"&W3&"'!$w4"

W3 是对我正在使用的表单的动态引用,W4 是我想要从表单中获取的单元格。

获得此信息后,启动宏录制会话。复制单元格并将其粘贴到另一个单元格中。我将其粘贴到合并单元格中,结果出现了经典的“大小相同”错误。但它做的一件事就是粘贴了我连接的结果文本(包括多余的“=”)。

复制您已执行此操作的任意数量。然后,进入每个粘贴的单元格,选择文本并按 Enter 键。它会将其更新为活动的直接引用。

完成后,将光标放在合适的位置并停止宏。将其分配给一个按钮,您就完成了。

第一次做这个有点麻烦,但是一旦你做到了,你就可以让方形钉子适合那个该死的圆孔。

相关内容