这种情况发生过多次(但并非总是如此)。这非常令人沮丧,我不知道为什么会这样。
A.xls 包含链接到 B.xls Sheet1 的公式。我正在处理 A.xls。我决定打开 B.xls。一旦我这样做 - 对 Sheet1 的所有引用都变成了 #REF。
IE。
='C:\..\[B.xls]!Sheet1'!A1
变成
='C:\..\[B.xls]!#REF'!A1
当然,所有之前正确的值现在都返回#REF。
这绝对令人沮丧,因为我没有办法在不重新打开我上次保存的 A.xls 版本的情况下撤消它。查找和替换也不理想,因为 A.xls 引用了 B.xls 的几个不同工作表 - 而且它们现在都是 #REF。
知道为什么吗?:( 运行 Excel 2010。
答案1
我遇到了同样的问题。我的是 Office 2010。Excel 文件存储在共享驱动器(NAS)中。
解决方案:转到文件 > 选项 > 信任中心。在右侧,单击信任中心设置。在信任中心窗口的左侧,单击受保护的视图,然后在右侧取消勾选对来自互联网的文件启用受保护的视图。
现在我的#REF! 问题解决了。
答案2
避免该问题的一种方法:
使用INDIRECT()
文本引用的文件和工作表名称。
例如:
令 Z1 为'C:\..\[B.xls]!Sheet1'
(带引号?未经测试)=INDIRECT(Z1&"!A1")
然后在需要引用该工作表中单元格 A1 的地方 使用。
此INDIRECT
功能仅在您打开了辅助 Excel 文件时才有效。一旦关闭,所有这些INDIRECT
引用都变为 #REF。
答案3
如果引用已关闭的工作簿,Excel 中的大多数公式都不会更新其公式。现在,如果您打开公式引用的工作簿,Excel 将尝试立即更新它。
我认为您的问题是,B.xls 已发生更改,而 A.xls 中的公式在您打开 B.xls 时尝试刷新其公式。由于自上次计算 A.xls 中的公式以来,B.xls 中发生了更改(例如,重命名了工作表或直接删除了工作表),A.xls 中的公式无法找到以前的引用,因此返回#REF!
。
我认为你可以通过两种方式来避免这种情况:
- 通过复制/粘贴值删除 A.xls 中的公式。这将阻止 A.xls 中的任何更新因 B.xls 中的更改和工作表中的任何其他公式而发生。但这本身就是一个缺点。
- 确保对 B.xls 的任何更改不涉及在 A.xls 中提供公式的工作表删除、重命名或行/列删除。
答案4
解决方案可以是打开您提供链接的文件,然后转到Data > Edit Links > Open Source
。这将打开源而不会发生错误#ref
。
另一种选择是保留带链接和不带链接的两个版本。无链接版本可通过 制作Data > Edit Links > Break Link
。
我认为这是 Excel 中的某种错误,导致工作表名称#ref
。