具有预定义和命名范围的Vlookup

我试图使用VLOOKUP函数来预定义和命名的范围,所以,在每一列我会寻找一个不同的范围,如下所示:

ABCD 1 41444 CARS VANS TRUCKS 2 41445 =VLOOKUP($A2,CARS,2,FALSE) =VLOOKUP($A2,VANS,2,FALSE) =VLOOKUP($A2,TRUCKS,2,FALSE) 

凡汽车,运输车,卡车是名义的电池范围。

为了解决这个问题,我用了

  VLOOKUP($A2,INDIRECT(B1),2,FALSE) 

但我有#REF作为答案。 当我使用VLOOKUP($A2,VANS,2,FALSE)我得到了正确的结果,但我想引用table_array一个单元格(如果是B1或C1或D1)。 任何人都可以帮助我吗?

你非常接近。 更换:

 =VLOOKUP($A2;INDIRECT(B1),2,FALSE) 

 =VLOOKUP($A2,INDIRECT(B1),2,FALSE) 

在两种情况下你可以得到#REF错误。

  1. Vlookup函数是这样定义的:

     VLOOKUP(lookup_value,table_array,col_index_num,range_lookup) 

    在你的工作表中,你用一列定义了Table_array 。 在同一时间你试图访问2列( Col_index_num = 2)。 但是如果你说它没有INDIRECT() ,它不会打扰你。

  2. 您正在使用dynamic命名范围( [示例] )。 对于这种types的命名范围,您不能使用INDIRECT() 。 如何绕过它? 检查例如在Excel公式中引用dynamic命名范围 。

您可以使用屏幕左上方的文本框(其中显示“B2”或单元格的任何坐标) effectively命名范围。 select整个列并在那里插入名称。

那么这个名字在公式中是有效的。

另一种方法:

SO17814780的例子

相同的公式从B2复制到D2。 名为array的范围显示在G1:J10中,但可以位于不同的工作表上,甚至可以(具有合适的附加引用)工作簿。

编辑使用三个不同命名范围的第二个示例

SO17814780第二个例子

在这种情况下,B2:D2中的公式在它们的第二个参数(所示的VANS )中不同。

任何时候你有一个公式的问题,使用评估公式function来逐步通过公式,看看实际上是什么造成的问题。

首先select返回#REF错误的公式,然后在Excel中select“ 公式”>“评估公式” 。 然后单击评估button,直到看到#REF错误。 对于你的例子,如果你看到像…

 VLOOKUP(2,#REF!,2,FALSE) 

那么你知道你试图引用的范围不存在,或者是无效的。 要检查工作簿中定义的范围,请使用“ 名称pipe理器” (“ 公式”>“名称pipe理器” )并查找您期望看到的范围(在这种情况下,您将查找名称为“CARS”的范围)。 你可以在这里更新它,然后再次检查公式。