为什么 INDIRECT() 不能在打开文件后立即获取动态数组引用?

为什么 INDIRECT() 不能在打开文件后立即获取动态数组引用?

我有一个包含指向某个范围的 INDIRECT() 的公式 - 将其称为 B4:F8。

如果我明确指定范围,如下所示:

=INDIRECT("B4:F8")

那么它工作正常。

然而,如果讨论的范围实际上是动态数组,大小未知但固定在 B4,我使用 # 溢出运算符来指定它,如下所示:

=INDIRECT("B4#")

那么它仍然可以正常工作,除了打开文件之后。首次打开文件时,公式返回 #REF。但是,要使其工作,我只需强制重新计算,方法是按 F9 或甚至将光标放在空白单元格中并按回车键。

谁能解释一下发生了什么事?

下面是一个示例的屏幕截图,显示刚刚打开之后和按下 F9 之前的情况。 以下是示例的屏幕截图。 每个表格上方的公式分别显示了B4、H4和N4的内容。

答案1

我无法正确复制您的问题,但我可以看到它正在发生,然后自行解决。

打开后,有问题的单元格会闪烁 REF 错误,然后显然会执行另一次计算并将其替换为正确的结果。

我认为您的版本可以完成除最后一步之外的所有操作。Excel 经常更新版本,并且会发生一些非常小的变化。

我举一个例子,上次我使用公式时HYPERLINK,至少是六个月前,但不到一年,如果我单击单元格中的空白(我可以通过加宽单元格来增加空白),我选择了该单元格,但没有激活超链接。

我可以通过选择几种不同的水平对齐选项来使整个单元格“可点击”。

昨天/今天早上,我发现现在可以选择整个单元格,而不必考虑所选择的水平对齐方式。

一件非常小的事,我实际上认为这是个损失,虽然是小事,但 MS 在听说这件事后显然觉得需要改变。所以他们改变了它。(我猜是因为这样做并不难,所以可以轻松快速地完成。)

这似乎是同一种情况。他们没有意识到发生了一些事情,大概也不想发生。(我想你也不想!)也许改变起来又快又容易,所以他们就这么做了。这不是什么大问题,尽管它会影响几亿用户,所以不要大肆宣传。

为了测试这一点...我使用的是他们保持的桌面版本,就像我的失败 IT 提供商允许的那样,当前版本是 2205(因此至少落后一个月)。如果您使用的是桌面程序的更新版本,并且尚未达到该更新,则可能正是上述情况。如果您已经过了该更新,或者使用了不同版本的程序,“不同”的版本(例如我的版本和“Excel On The Web”)是不同的,而不是像 2205 和 2201 版本不同,那么这可能是也可能不是正在发生的事情。

如果看起来是这样,确保您拥有最新版本可能会为您解决问题。在某些情况下,这肯定会是一个问题,尽管大多数情况下都会出现,但最有可能的是,在利用工作簿中的任何内容进行任何类型的决策之前,某些事情会触发第二次计算。“最有可能”并不“总是”……无论您使用什么程序“表亲”,这似乎都会损害动态范围功能,因此在我看来,微软很可能会尽快寻求解决方案并尽早更新每个解决方案。

最后,我不知道我的程序表亲是否曾遇到过这个问题,只是我可以看到步骤在我面前闪过,并且可以相信它也确实存在,只是我从未注意到,现在已修复。但是,这只是“相信”,而不是确定。

与此同时,Isolated的评论有一个非常容易实现的修复方法,即宏,即“打开时”宏,立即执行另一次计算。缺点是有些组织不喜欢宏,而有些用户无论如何都对它们持怀疑态度。

答案2

您可能有一个间接循环引用,即公式通过其他单元格和公式间接引用其自己的单元格。

要确定是否确实如此:

  • 在“公式”选项卡的“公式审核”组中,单击“错误检查”旁边的向下箭头

  • 单击循环引用

  • Excel 将显示一个循环引用的单元格地址

  • 最后阶段是修复参考,使其不再是循环的。

参考 : Excel 中的循环引用

相关内容