我有两个工作簿,Source.xlxs 和 Linked.xlsx。在 Source 中,我有一个选项卡,该选项卡以数组公式的形式将单元格链接到 Linked 中选项卡 TabName 中的单元格。Source 中的公式看起来像这样 {='[Linked.xlsx]TabName'!$B$3:$D$10)}。当 Linked 被移动时,公式会更改为这样 {='htttps://site.com/sites/Site791/Root/Folder1/Folder2/Folder3/[Linked.xlsx]'!$B$3:$D$10)},其中 UNC 文件路径是 Linked 工作簿的原始文件路径,因此有效地断开了与新位置的实际工作簿的连接。
有没有办法让我设置一个单元格,输入新的文件路径,它会自动更正更新的文件路径。我想避免每次发生这种情况时都要进行查找和替换,而是将新文件路径(或其中的一部分)输入到 UNC 可以引用的单元格中。
答案1
是的。您想使用该INDIRECT()
功能。
基本上,您选择一个单元格,其中将包含路径名称/文件名/工作表名称等的任何可更改部分。一旦您知道了新信息,就可以在此处输入新信息。
然后,您使用字符串技术来创建一个字符串,使用该可变信息和任何不经常变化的信息,将产生一个最终的字符串,该字符串是适当的、Excel 可以接受的、路径/文件名/等。
一旦您获得了完整、完全正确的字符串,您就可以用函数“包装”它INDIRECT()
(“包装”意味着您只需将它放入函数的 () 中)。
INDIRECT()
会将字符串从无用的字符串转换为实际的单元格地址。或范围地址。然后,Excel 会将该地址或范围地址用作该函数的地址或范围地址。因此,您现在有了一个可以对地址信息进行单一更改的地方(顺便说一下,您可以粘贴更改),这样就不会输入错误,并且可以将其反映到数百万个公式中。
现在...考虑到您的需要,该字符串将非常长,而仅创建范围地址的结果公式将更长。想象一下将其粘贴到大量公式中,每个公式可能要粘贴几次。甚至Finds and Replace
可能令人讨厌。但是,您可以创建一个简单的命名范围,如“UNC_Path”,在其中放置所有那些垃圾,一旦您拥有了它,就很好了。然后使用该命名范围为范围地址构建公式,而不必更改公式本身,只需将可更改信息放在一个地方。它本身可以在命名范围内,因此您不需要在某个地方为其设置单元格。当不在某个单元格中时,用户更难跨过它。
但事实就是这么简单。
不过,还有一点需要考虑: INDIRECT()
不会读入已关闭的文件。有办法解决这个问题,其中一种非常简单,但如果没有关于您在此处使用情况的确切信息,那么深入研究它会变得非常复杂。并且能够提出问题来澄清这一点。因此,如果链接的文件将被关闭,这是一个令人担忧的问题,但这是可行的。只需要更多信息来简化答案。