-1

假设有一个 Excel 文档C:\Budget-v034-2012.xlsx(doc A) 和另一个 Excel 文档 (doc B) 引用了第一个文档中的一个单元格,如下所示:='C:\[Budget-v034-2012.xlsx]Sheet1'!$A$1

当文档 A 更新时,它会以更新的版本号保存(即 v034 变为 v035)。如何使 doc B 使用新版本号自动更新其引用?

该解决方案不需要完全自动化。例如,文档 B 中可能有一个单元格,其中手动提供了当前版本号,并且所有引用都自动合并了提供的版本号。如何实现这样的合并?

4

2 回答 2

2

这是一个非常简单(简单化?)的解决方案:

在您的文档 B 中,您可以存储文件的路径和/或名称(例如在我的示例中的单元格 A1 中)并使用INDIRECT公式在另一个单元格中为您提供结果。

  • 在单元格 A1 中:Budget-v034-2012.xlsx
  • 在另一个单元格中:=INDIRECT('C:[' & A1 & ']Sheet1'!$A$1)

为了更好的可维护性,请注意您也可以使用Named Range

  • 在文档 B 的工作表的单元格中添加路径或名称(Sheet1、单元格 A1 或其他)
  • 在左上角(单元格 A1 上方)输入一个名称(您想要的名称),比如说Path
  • 在另一张纸上,您可以使用以下公式:=INDIRECT('C:[' & Path & ']Sheet1'!$A$1)
于 2012-08-21T13:30:31.167 回答
0

除非有充分的理由,否则通常更容易保持相同的文件名并更新文件单元格中的版本详细信息。这样,任何外部链接都将与相关数据保持同步。

如果您在 Excel 中使用新文件名保存新文件,则其他工作簿中的链接仍将链接到旧文件,并且只有在您删除文件或在外部重命名文件时才会断开。

有几种方法可以在 Excel 中手动执行此操作

  1. 在 Excel 数据/编辑链接/突出显示源并单击更改源
  2. 使用 Find & Replace,例如 find [Budget-v034-2012.xlsx] 替换为 [Budget-v035-2012.xlsx](确保选项已启用并且 Lookin:= 公式和 March Entire 单元格内容:= FALSE)

如果您记录执行上述两项操作的宏,您将得到类似于

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
于 2012-08-21T13:37:18.810 回答