2017-09-14 144 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)