Vlookup函数的dynamictable_array值

好的,我正试图弄清楚下面是否可能,以便我可以在以后的项目中使用它。 我一直在示例工作簿中testing和处理此代码,这就是为什么文件名称是垃圾。 所以不要评价我。

我有一个VLOOKUP

 =VLOOKUP(A6,[dfhdfh.xlsx]Sheet1!$A:$B,2,FALSE) 

这个function目前效果很好。 但是我想将函数中的静态table_array值replace为单元格引用,我可以随意input不同的文件名。

有些东西是:

  =VLOOKUP(A3,CONCATENATE("[",F2,"]","Sheet1!$A:$B"),2,FALSE) 

其中F2包含文件名和扩展名dfhdfh.xlsx

但是,每当我尝试执行我的VLOOKUP与它的嵌套CONCATENATE函数,我得到一个#VALUE! 错误。 是什么赋予了?

从评论后续

如果您的工作簿dfhdfh.xlsx始终打开,您可以使用

=VLOOKUP(A3,INDIRECT("["&F2&"]Sheet1!$A:$B"),2,0)

但是如果你的wbclosures了,那么INDIRECT不起作用。 在这种情况下,您需要VBA解决scheme。


关于你的公式:

1) CONCATENATE(A1,A2)A1 & A2相同。

2)实际上,连接工作和CONCATENATE("[",F2,"]","Sheet1!$A:$B")结果是"[dfhdfh.xlsx]Sheet1!$A:$B" ,但是excel doesn不认识这个string作为参考。

所以你需要使用Indirect为此目的:
INDIRECT(CONCATENATE("[",F2,"]","Sheet1!$A:$B"))给你正确的参考。

整个公式将是:

 =VLOOKUP(A3,INDIRECT(CONCATENATE("[",F2,"]","Sheet1!$A:$B")),2,FALSE). 

但是,使用第一点,你可以缩短这个公式:

 =VLOOKUP(A3,INDIRECT("[" & F2 & "]Sheet1!$A:$B"),2,FALSE)