如果你的第二個工作簿(與路徑'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中有整個路徑,它也會給出錯誤。 仔細一看,間接功能會引發此錯誤。它對你有用嗎? – user2204330
我在回答中更新了公式。嘗試一下。如果它仍然不起作用,請顯示您的'A1'單元格的內容 –
這對我來說不起作用。不過,謝謝你告訴我有關間接功能。我創建了一個快速解決方案。就我的目的而言,每個單元格的表名稱值都在變化,這些表單位於不同的工作簿中。我使用ASAP實用工具拉出了表格名稱列表(200+)。使用間接函數來拉取我需要的值,最後使用sumproduct函數將我的值放入第一個工作簿中。 – user2204330