使用INDIRECT()通过VLOOKUP()设置dynamic范围

我试图使用INDIRECT()来为基于定义的数值的VLOOKUP()函数设置一个范围。 当逐步通过VLOOKUP()公式时,INDIRECT()函数返回我认为可接受的范围。 但是,运行公式时,将返回“#N / A”错误,我不知道为什么。

为了提供更多的风味,我使用了LEFT()和ADDRESS()来确定列首字母的基础上的一个单独的值MATCH()。 使用固定偏移量,MATCH()函数返回正确的列标题,并提供范围大小的常量。 以下是我的公式:

=VLOOKUP(J2,INDIRECT("$"&LEFT(ADDRESS(1,MATCH($H2,ZAS_Lookup,0)+8,4),1+(MATCH($H2,ZAS_Lookup,0)+8>26))&"$1:$"&LEFT(ADDRESS(1,MATCH($H2,ZAS_Lookup,0)+9,4),1+(MATCH($H2,ZAS_Lookup,0)+9>26))&"$29"),2,TRUE) 

正如我所提到的那样,在最终计算之前进入最后一步时,公式看起来好像会压缩到以下内容:

 =VLOOKUP(5,$DW$1:$DX$29,2,TRUE) 

但事实并非如此,因为它返回#N / A。 任何想法为什么? 我是否需要使用不同的function来dynamic设置范围?

我意识到我需要命名表所在的选项卡。 简单地设置范围是不够的 – 我还需要告诉Excel表格是在哪个表格上。