我引用了另一个如下所示的工作簿:
=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 键。它会将其更新为活动的直接引用。
完成后,将光标放在合适的位置并停止宏。将其分配给一个按钮,您就完成了。
第一次做这个有点麻烦,但是一旦你做到了,你就可以让方形钉子适合那个该死的圆孔。