假设有一个Excel文档C:\Budget-v034-2012.xlsx
(文档A)和另一个Excel文档(文档B)引用第一个文档中的单元格,如下所示:='C:\[Budget-v034-2012.xlsx]Sheet1'!$A$1
更新文档A后,将使用更新的版本号保存(即v034变为v035)。如何让doc B自动使用新版本号更新其引用?
解决方案不需要完全自动化。例如,可以是文档B中的单元格,其中当前版本号是手动提供的,并且所有引用都自动包含所提供的编号。如何实现这种合并?
答案 0 :(得分:2)
这是一个非常简单(简单化?)的解决方案:
在文档B中,您可以存储文件的路径和/或名称(比如我的示例中的单元格A1),并使用INDIRECT
公式在其他单元格中显示结果。
Budget-v034-2012.xlsx
=INDIRECT('C:[' & A1 & ']Sheet1'!$A$1)
为了更好的可维护性,请注意您也可以使用Named Range。
Path
=INDIRECT('C:[' & Path & ']Sheet1'!$A$1)
答案 1 :(得分:0)
除非有充分的理由,否则通常更容易保留相同的文件名并更新文件中单元格中的版本详细信息。这样,任何外部链接都将与相关数据保持同步。
如果使用Excel中的新文件名保存新文件,则其他工作簿中的链接仍将链接到旧文件,并且只有在删除文件或从外部重命名时才会中断。
有几种方法可以在Excel中手动执行此操作
如果你录制上述两种宏,你会得到类似于
的东西Sub Macro1()
ThisWorkbook.ChangeLink Name:="C:\Users\ooo\Desktop\Budget-v034-2012.xlsx", NewName _
:="C:\Users\ooo\Desktop\Budget-v035-2012.xlsx", Type:=xlExcelLinks
End sub
Sub Macro1()
Cells.Replace What:="[Budget-v034-2012.xlsx]", Replacement:="[Budget-v035-2012.xlsx]", LookAt:=xlPart _
, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End Sub