我在本地文件夹中有一个源文件,其中包含一个包含键值对的两列表格,以及一个使用源数据的目标文件,如下所示:
链接到特定单元格:
='C:\Temp[source.xlsx]Sheet1'!$B1
查询某个范围内的值:
=VLOOKUP(A1,'C:\Temp[source.xlsx]Sheet1'!$A$1:$B$6,2,0)
带范围和条件的 SUMIFS 函数:
=SUMIFS('C:\Temp[source.xlsx]Sheet1'!$B$1:$B$6,'C:\Temp[source.xlsx]Sheet1'!$A$1:$A$6,D1)
当打开目标工作簿而不打开源工作簿时,我收到“此工作簿包含指向...的链接”消息,其中包含“更新”和“不更新”选项。在此提示的背景中,我可以看到关闭文件时保存的值。
如果源文件保持关闭状态并且我选择“更新”选项,我会获得链接(1)和查询(2)的正确值,但是#价值!SUMIFS 错误 (3)。如果我现在打开源文件,则 SUMIFS 值计算正确。
请注意 - 在没有打开源文件的情况下 - 在“编辑链接”对话框(来自数据文件夹)中,我首先获得源文件的“未知”状态,然后在单击“检查状态”后获得“确定”,并且在单击“更新值”后仍然获得#VALUE
这是我在工作相关情况下使用的测试用例:一个带有 SUMIFS 函数的文件,其参数指向源文件,当提示更新/不更新时,该文件显示正确的值,但无论我选择哪个选项(更新或不更新),它都会变为 #VALUE!错误
显而易见的问题是:Excel 2013 为什么会出现这种情况以及如何解决?
答案1
Excel 按照设计运行。它不允许公式读取已关闭的工作簿中的数据。
要解决此限制,您需要使用 VBA 从已关闭的文件中检索数据。您也可以搜索“excel 2013 已关闭的工作簿数据”以查找其他方法。
以下是如何实现它的一个例子使用 Microsoft Excel 中的 VBA 从已关闭的工作簿中读取信息:
Sub GetDataFromClosedWorkbook()
Dim wb As Workbook
Application.ScreenUpdating = False ' turn off the screen updating
Set wb = Workbooks.Open("C:\Foldername\Filename.xls", True, True)
' open the source workbook, read only
With ThisWorkbook.Worksheets("TargetSheetName")
' read data from the source workbook
.Range("A10").Formula = wb.Worksheets("SourceSheetName").Range("A10").Formula
.Range("A11").Formula = wb.Worksheets("SourceSheetName").Range("A20").Formula
.Range("A12").Formula = wb.Worksheets("SourceSheetName").Range("A30").Formula
.Range("A13").Formula = wb.Worksheets("SourceSheetName").Range("A40").Formula
End With
wb.Close False ' close the source workbook without saving any changes
Set wb = Nothing ' free memory
Application.ScreenUpdating = True ' turn on the screen updating
End Sub
这是另一个例子 -Excel“拉”功能:创建指向已关闭工作簿的动态链接。
您必须对此进行实验以满足您自己的需要。