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)