【问题标题】:Dynamically changing the file path of source workbook in VLOOKUP在 VLOOKUP 中动态更改源工作簿的文件路径
【发布时间】:2023-03-31 08:30:01
【问题描述】:

我想要一个包含文件路径 ('C:\Documents\Costs\[Costing 2017.xls]Sheet2'!A:D) 的单元格,该文件路径将在工作簿的其余部分的不同工作表中的 VLOOKUP 函数中使用。

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

='Master Sheet'!$A$2

在以下表格(表格 2 到 8)中,我使用 VLOOKUP 引用 Costing 2017.xls 工作簿中的某些产品编号,返回价格。我可以这样使用VLOOKUP

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

and it works fine.

但我希望能够更改文件路径,而不必通过可能超过 8 张纸复制公式。

我尝试使用INDIRECT(),但没有得到我想要的结果。

【问题讨论】:

  • 您尝试的 INDIRECT 是什么?还要意识到 INDIRECT 需要打开文件才能工作。
  • 我想使用 INDIRECT 来简单地引用一个单元格并返回单元格中包含的文本。但是,当我尝试测试该功能时,我没有得到文本,而只是'!REF',例如 INDIRECT(" & A2 &")
  • 此链接stackoverflow.com/questions/579797/… 将向您展示如何使用 vba 在幕后(或尽可能)打开 Excel 工作簿。然后,您可以使用 indirect 进行 vlookup 并在完成后关闭工作簿。如果您使用多个工作簿,打开每个工作簿可能需要一段时间。你正在尝试的可能有很多开销。

标签: excel dynamic vlookup worksheet-function


【解决方案1】:

带有 INDIRECT 的公式是:

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

但 INDIRECT 需要打开参考工作簿,否则会返回错误。

【讨论】:

  • 感谢您的回答斯科特。当我尝试将 =INDIRECT('Master Sheet'!$B$2) 放入单元格时,它仍然返回#REF!。我希望它返回该单元格中的文本,而不是打开该工作簿或对该工作簿执行任何操作。
  • 你不能。您不能使用 INDIRECT 来引用已关闭的工作簿。没有其他办法了。因此,您要么打开正在引用的工作簿并使用 INDIRECT,要么单独更改所有公式。 @SherifR
  • 工作簿是打开的。我在同一个工作簿'Master Sheet'中使用 =INDIRECT('Master Sheet'!$B$2) 。我只想检索该单元格中的文本并在公式中使用它。
  • 否,C:\Documents\Costs\[Costing 2017.xls] 工作簿必须打开。该单元格中引用的工作簿必须打开。 @SherifR
  • 嗯,这对我的方法产生了影响,非常感谢 Scott,我非常感谢您的时间和帮助。我会尝试找出不同的方法。
【解决方案2】:

您需要使用已定义的名称:

  • 转到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)

【讨论】:

    猜你喜欢
    • 2021-12-28
    • 2012-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-27
    • 1970-01-01
    • 2016-04-05
    • 1970-01-01
    相关资源
    最近更新 更多