2014-01-12 25 views
1

我認爲這應該很簡單,但我沒有運氣能夠做到這一點或在互聯網上尋找它。顯然,我錯過了一些非常明顯的東西。從公式中的預定義單元格使用文件路徑

我有一個小區,可以說A1,它包含以下文件路徑:

'C:\[Required file path]Sheetname' 

現在我想用它來創建在B1單元格中的公式,可以說,:

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

由於這個鏈接將被動態決定,我希望能夠做這樣的事情:

=Trim(A1!B26) 

如果A1 =我的所需的文件路徑。但這不起作用。

希望我清楚地解釋了這個問題。預計感謝!

回答

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 
+0

我有其他工作簿打開的文檔。但是下面的公式會引發一個#REF錯誤: = TRIM(INDIRECT(A1&「!」&CELL(「address」,B26))) 即使我在A1中有整個路徑,它也會給出錯誤。 仔細一看,間接功能會引發此錯誤。它對你有用嗎? – user2204330

+0

我在回答中更新了公式。嘗試一下。如果它仍然不起作用,請顯示您的'A1'單元格的內容 –

+0

這對我來說不起作用。不過,謝謝你告訴我有關間接功能。我創建了一個快速解決方案。就我的目的而言,每個單元格的表名稱值都在變化,這些表單位於不同的工作簿中。我使用ASAP實用工具拉出了表格名稱列表(200+)。使用間接函數來拉取我需要的值,最後使用sumproduct函數將我的值放入第一個工作簿中。 – user2204330

0

嘗試:

=TRIM([A1]Sheet1!B26) 

其中,A1持有像的引用:C:\用戶\用戶\桌面\ Test.xlsx。

它會提示你文件瀏覽器 - 只需選擇您正嘗試引用(例如Test.xlsx)

+0

需要爲超過200個單元做:P – user2204330

相關問題