我使用 CONCATENATE 编写了一个外部引用,但由于文件之间没有相互链接,因此无法从外部文件中提取值。使用了 INDIRECT(),但只有打开 excel 文件时才会提取值。还有其他解决方案吗?
答案1
事实上,INDIRECT()
对于已关闭的文件则无法起作用。
解决此问题的传统方法是在电子表格中设置一些“偏僻”的位置,甚至是命名范围,在其中使用预先编写的 DIRECT 公式来查看(有时关闭,有时打开)其他电子表格。然后,您可以引用该预先编写的公式来提供所需的值。如果您建立一个引用并将其提供给它,它将INDIRECT()
引用同一电子表格中的 DIRECT 公式,而 DIRECT 公式将执行INDIRECT()
无法执行的查看关闭电子表格的操作。
如果您有多个可能性,那么设置起来可能会有点麻烦... 假设您想要查看 40 个不同电子表格中的给定单元格。INDIRECT()
当然,一次只能在其中一个单元格中编写公式,但那个单元格可以是 40 个单元格中的任何一个。您必须编写 40 个 DIRECT 公式,并在需要值的地方使用略有不同的逻辑,即IF()
测试公式。
但是,您可以使用标准字符串公式来编写这些 DIRECT 公式,省去开头的“=”,使用公式其余部分不会使用的某个字符。也许是“¢”字符。因此,您将得到 40 个如下所示的“公式”:
¢A1
然后,完成后,复制并粘贴为值,使用Find and Replace
“=”替换不常见的字符,字符串将转换为公式。所以...讨厌...但并不难,甚至不费时间。
当然,如果您有 40 个工作簿需要参考,并且每个工作簿中可能有 100 个不同的单元格,那可能会非常累人......但至少IF()
选择从哪个工作簿中获取值的测试不会更难,真的。
但请记住,这是查看可能已关闭的工作簿的一般情况,与你对 Excel 提出的任何通常要求相比,Excel 在每个必须执行的地方执行所有这些操作的负担非常重。在公式中评估函数比进入 Windows、在后台打开文件、加载文件、查找值、让 Windows 关闭文件并将值放入当前工作簿要容易得多。例如,如果有 40 个这样的引用,则可以同时运行 40 个宏。
但它确实会起作用,而且你永远不知道它是否会引人注目,除非你自己尝试,然后等待你的用户尝试它。所以不要仅仅因为这个原因而回避它,而不是先尝试一下。