【问题标题】:Use file path from a predefined cell in a formula使用公式中预定义单元格的文件路径
【发布时间】:2014-01-12 08:34:45
【问题描述】:

我认为这应该很简单,但我没有运气能够做到这一点或在互联网上寻找它。显然,我遗漏了一些非常明显的东西。

我有一个单元格,比如说 A1,它包含以下文件路径:

'C:\[Required file path]Sheetname'

现在我想用它在单元格 B1 中创建一个公式,比如说:

=Trim('C:\[Required file path]Sheetname'!B26)

由于这个链接是动态决定的,我希望能够做这样的事情:

=Trim(A1!B26)

其中 A1 = 我所需的文件路径。但这不起作用。

希望我在解释问题时足够清楚。谢谢期待!!

【问题讨论】:

    标签: excel excel-formula excel-2010


    【解决方案1】:

    如果您的第二个工作簿(路径为'C:\[Required file path]Sheetname'已打开(但在这种情况下,您不需要使用工作簿的完整路径,只使用 WB 名称就足够了),您可以使用INDIRECT 公式(如果您的A1 包含''C:\[Required file path]Sheetname'):

    =TRIM(INDIRECT(A1 & "!" & CELL("address",B26)))
    

    但是如果您的第二个工作簿已关闭,我发现的方法是将用户定义的函数添加到您的第一个工作簿并使用它:

    =TRIM(getValue(A1 & "!" & CELL("address",B26)))
    

    getValue 定义为:

    Function getValue(formulaString As String)
       Application.Volatile
       Dim app As Excel.Application
       Dim wb As Workbook
    
       'set default falue to #REF..if we'd get normal value - we'll change getValue to it'
       getValue = CVErr(xlErrRef)
    
       'if second WB is open - we can easily evaluate formula and exit function'
       getValue = Evaluate(formulaString)
       If Not IsError(getValue) Then
          Exit Function
       End If
    
       'if we appear here - second WB is closed...'
       On Error GoTo ErrHandler
    
       Set app = New Excel.Application
       Set wb = app.Workbooks.Add
    
       With wb.Sheets(1).Range("A1")
          .Formula = "=" & formulaString
          app.Calculate
          getValue = .Value
       End With
    
    ErrHandler:
       If Not wb Is Nothing Then wb.Close False
       If Not app Is Nothing Then app.Quit
       Set app = Nothing
       Set wb = Nothing
    End Function
    

    【讨论】:

    • 我打开了另一个工作簿。但是下面的公式会引发 #REF 错误: =TRIM(INDIRECT(A1 & "!" & CELL("address",B26))) 即使我在 A1 中有整个路径,它也会出错。仔细一看,间接函数会引发此错误。它对你有用吗?
    • 我已经更新了答案中的公式。尝试一下。如果它仍然不起作用,请显示您的A1 单元格的内容
    • 这对我不起作用。但是,感谢您告诉我有关间接功能的信息。我创建了一个快速解决方法。出于我的目的,每个单元格的工作表名称的值都在变化,并且这些工作表位于不同的工作簿中。我使用 ASAP 实用程序提取了工作表名称列表(200+)。使用间接函数提取我需要的值,最后使用 sumproduct 函数将我的值放入第一个工作簿中。
    • 如果你能告诉我你A1 单元格中的内容,我会尽力帮助你
    • 1) 您在[Workbookname.xlsx] 之前错过了“\”。正确的路径应该是:''E:\Project\SubFolder\Subfolder\[Workbookname.xlsx]Sheetname' 2) 正确的路径使用公式 =TRIM(INDIRECT(A1 & "!" & CELL("address",B26))) 3) 或者您可以使用以下糟糕的公式(它会为您添加“\”):=TRIM(INDIRECT(LEFT(A1,FIND("[",A1)-1) & "\" & RIGHT(A1,LEN(A1)-FIND("[",A1)+1) & "!" & CELL("address",B26)))
    【解决方案2】:

    试试:

    =TRIM([A1]Sheet1!B26)
    

    其中 A1 包含如下引用:C:\Users\User\Desktop\Test.xlsx。

    它可能会通过文件浏览器提示您 - 只需选择您尝试引用的文档(例如 Test.xlsx)

    【讨论】:

    • 需要为 200 多个单元格执行此操作:P
    • 当您更改单元格 A1 的值(比如不同的文件)时,旧值仍然存在。
    猜你喜欢
    • 2011-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-03-10
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    相关资源
    最近更新 更多