在 Excel 2013 中使用来自另一个工作簿的范围更新 SUMIFS 公式时出现 #value 错误

在 Excel 2013 中使用来自另一个工作簿的范围更新 SUMIFS 公式时出现 #value 错误

我在本地文件夹中有一个源文件,其中包含一个包含键值对的两列表格,以及一个使用源数据的目标文件,如下所示:

  1. 链接到特定单元格:

    ='C:\Temp[source.xlsx]Sheet1'!$B1

  2. 查询某个范围内的值:

    =VLOOKUP(A1,'C:\Temp[source.xlsx]Sheet1'!$A$1:$B$6,2,0)

  3. 带范围和条件的 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“拉”功能:创建指向已关闭工作簿的动态链接

您必须对此进行实验以满足您自己的需要。

相关内容