如何在Excel INDIRECT函数中创建字符串以动态引用外部电子表格中的单元格

时间:2012-01-30 21:21:37

标签: vba excel-formula

我可以在Excel 2010中轻松使用外部参考

单元格A1:='BLAH.XLSX'!Fees[[#Totals],[Billable Hours]]

但是假设B1包含FOO.XLSX

我现在想要A1

='FOO.XLS'!Fees[[#Totals],[Billable Hours]]

我尝试了间接功能

=INDIRECT(CONCATENATE("'", B1, "'!Fees[[#Totals],[Billable Hours]]"))

但这只是一个#REF错误,但它解析了(我在excel中使用了show steps函数) 到:

=INDIRECT("'FOO.XLSX'!Fees[[#Totals],[Billable Hours]]")

我尝试了很多东西但没有给我正确的参考

suchas =INDIRECT(CONCATENATE("='", B1, "'!Fees[[#Totals],[Billable Hours]]"))解析为

=INDIRECT("='FOO.XLSX'!Fees[[#Totals],[Billable Hours]]")

此外,我想避免VBA避免安全警告/对话框等,但如果这是唯一的方法,我会接受这个

我觉得我很亲近

2 个答案:

答案 0 :(得分:1)

正如Jesse所说,你不能使用INDIRECT来引用封闭的工作簿。除非您使用加载项功能,否则没有其他公式解决方案。 INDIRECT.EXT适用于已关闭的工作簿,但您需要下载MOREFUNC addin才能获得该功能,google Morefunc

答案 1 :(得分:1)

请参阅迪克博客的INDIRECT and closed workbooks

Harlan Grove的Pull function并通过VBA直接打开工作簿进行大规模操作是两种最常用的方法