罗伊(Roy)有一个公式引用了另一个工作簿中的单元格,即='[http://www.formville.com/C4_free-timesheets.html [Timesheet] s.xlsm] Week01’!L6。

他希望该公式从另一个单元格中选取工作表的名称(Week01),以便该公式变得更加通用。罗伊想知道他应该如何更改公式,以便可以使用单元格B9中的任何工作表名称。

解决此问题的最简单方法是使用INDIRECT工作表功能。本质上,它需要一个单元格地址并将其用作“指针”,然后从该单元格中检索值。例如,您可以使用以下命令:

=INDIRECT(L6)

这导致获取单元格L6中的值,并将其用作指向您真正想要的内容的指针。因此,如果单元格L6包含“ A7”,则该函数将返回单元格A7中任何值。有趣的是,如果以这种方式调用该函数,则会得到不同的结果:

=INDIRECT("L6")

结果是单元格L6的内容,而不是使用单元格L6的内容作为指针。

利用此信息,您可以轻松地将一个地址与INDIRECT函数一起正常使用:

=INDIRECT("'[Timesheets.xlsm]" & K2 & "'!L6")

该公式假定所需工作表的名称存储在单元格K2中。如果该单元格中没有有效的工作表名称,则公式将返回#REF错误。

使用此方法的一个重要“陷阱”是必须确保工作簿(Timesheets.xlsm)已打开。 INDIRECT不会进入未打开的工作簿。如果未打开,则会出现#REF错误,而不是所需的值。

如果要使公式更加通用,则可以从工作表中的单元格中提取工作簿名称,工作表名称和单元格参照,如下所示:

=INDIRECT("'[" & K1 & "]" & K2 & "'!" & K3)

在这种情况下,K1将包含工作簿名称(Timesheets.xlsm),K2将包含工作表名称(“ Week01”),而K3将包含所需的单元格(“ L6”)。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(6069)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。