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

时间:2013-07-23 15:39:23

标签: excel vlookup

我正在尝试将VLOOKUP函数用于预定义和命名范围,因此,在每列中我将查找不同的Range,如下所示:

       A          B                                C                                 D                               
1     41444     CARS                              VANS                            TRUCKS
2     41445   =VLOOKUP($A2,CARS,2,FALSE)    =VLOOKUP($A2,VANS,2,FALSE)      =VLOOKUP($A2,TRUCKS,2,FALSE)

CARS,VANS,TRUCKS是CELL RANGES的名称。

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

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

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

5 个答案:

答案 0 :(得分:1)

你非常接近。替换:

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

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

答案 1 :(得分:1)

在两种情况下,您可能会收到#REF错误。

  1. Vlookup函数定义方式如下:

    VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
    

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

  2. 您正在使用动态命名范围([example])。对于此类命名范围,您无法使用INDIRECT()。如何绕过它?检查例如Referencing Dynamic Named Range in Excel Formula

答案 2 :(得分:0)

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

然后该名称在公式中有效。

答案 3 :(得分:0)

另一种方法:

SO17814780 example

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

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

SO17814780 second example

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

答案 4 :(得分:0)

如果您遇到公式问题,请使用 评估公式 功能逐步完成公式,看看实际上导致问题的原因。

首先选择返回#REF错误的公式,然后在Excel中选择公式>评估公式。然后单击“评估”按钮,直到看到#REF错误。例如,如果您看到类似......

的内容
VLOOKUP(2,#REF!,2,FALSE) 

然后您知道您尝试引用的范围不存在或无效。要检查工作簿中定义的范围,请使用 名称管理器 公式>名称管理器)并查找您希望看到的范围(在这种情况下,您将寻找名称为“CARS”的范围)。您可以在此处更新,然后再次检查公式。