2017-09-14 90 views
0

我希望有一個包含文件路徑('C:\Documents\Costs\[Costing 2017.xls]Sheet2'!A:D)的單元格,該文件路徑將在整個工作簿其餘部分的不同工作表中的VLOOKUP函數中使用。動態更改VLOOKUP中源工作簿的文件路徑

Currently, I have the file path in cell A2 of the sheet named 'Master Sheet'因此對該單元格的引用是。

='Master Sheet'!$A$2 

在下面的片(片2到8),我使用VLOOKUPCosting 2017.xls工作簿引用某些產品編號,返回的價格。我可以用VLOOKUP這樣

=VLOOKUP(A2,'C:\Documents\Costs\[Costing 2017.xls]Sheet2'!A:D,4,FALSE) 

and it works fine.

但我希望能夠通過可能比8張以上更改文件路徑,而不必去複製公式。

我試過使用INDIRECT(),但我沒有得到我想要的結果。

+1

你試過的是什麼間接?還意識到INDIRECT要求文件開放工作。 –

+0

我想使用INDIRECT來簡單地引用單元格並返回單元格中包含的文本。但是,當我試圖測試函數時,我沒有收到文本,而只是'!REF',如INDIRECT(「&A2&」) –

+0

此鏈接https://stackoverflow.com/questions/ 579797/open-excel-file-for-reading-with-vba-without-display將向您展示如何使用vba在幕後(或儘可能最好)打開excel工作簿。然後,您可以使用「間接」進行vlookup,並在完成後關閉工作簿。如果您使用多個工作簿,則可能需要一段時間才能打開每個工作簿。你試圖潛在的有很多開銷。 – abraxascarab

回答

0

與間接的公式是:

=VLOOKUP(A2,INDIRECT('Master Sheet'!$A$2),4,FALSE) 

但間接的要求,參考工作簿是開放的,否則將返回一個錯誤。

+0

謝謝你的回答斯科特。當我嘗試將= INDIRECT('​​Master Sheet'!$ B $ 2)放入單元格中時,它仍會返回#REF !.我希望它能夠返回該單元格中的文本,而不是打開或對該工作簿執行任何操作。 –

+0

你不能。您**不能**使用間接引用一個封閉的工作簿。沒有其他辦法了。因此,您要麼打開正在引用的工作簿並使用INDIRECT,要麼單獨更改所有公式。 @SherifR –

+0

雖然該工作簿是開放的。我正在使用= INDIRECT('​​Master Sheet'!$ B $ 2)在同一本工作手冊'Master Sheet'中。我只想檢索該單元格中的文本並在公式中使用它。 –

0

您需要使用已定義的名稱:

  • 轉到Formulas > Defined Names > Define Name
  • 在 「名稱」 中輸入Costing
  • 在輸入'C:\Documents\Costs\[Costing 2017.xls]Sheet2'!A:D 「是指:」 字段

現在,下列公式允許您通過簡單更改定義的名稱Costing(通過Formulas > Defined Names > Name Manager)動態更改文件路徑。

=VLOOKUP(A2,Costing,4,FALSE)