我认为这应该很简单,但我没有运气能够做到这一点或在互联网上寻找它。显然,我遗漏了一些非常明显的东西。
我有一个单元格,比方说A1,包含以下文件路径:
'C:\[Required file path]Sheetname'
现在我想用它在单元格B1中创建一个公式,让我们说:
=Trim('C:\[Required file path]Sheetname'!B26)
由于此链接将动态决定,我希望能够做到这样的事情:
=Trim(A1!B26)
其中A1 =我所需的文件路径。但这不起作用。
希望我能够清楚地解释这个问题。在期待中感谢!!
如果您的第二个工作簿(路径为'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
尝试:
=TRIM([A1]Sheet1!B26)
其中A1包含如下引用:C:\ Users \ User \ Desktop \ Test.xlsx。
它可能会提示您使用文件浏览器 - 只需选择您要引用的文档(例如Test.xlsx)