1

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

       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 是单元格范围的名称。

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

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

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

4

5 回答 5

1

You can get #REF error in two situations.

  1. Vlookup function is define this way:

    VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
    

    In your sheet you defined Table_array with one column. In the same time you're trying to access 2 column (Col_index_num = 2). But if you say it works without INDIRECT(), it doesn't bother you.

  2. You're using dynamic named range ([example]). For this type of named range, you can't use INDIRECT(). How to bypass it? Check e.g. Referencing Dynamic Named Range in Excel Formula.

于 2013-07-23T16:23:31.950 回答
1

你很亲密。更换:

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

=VLOOKUP($A2,INDIRECT(B1),2,FALSE)
于 2013-07-23T15:48:30.657 回答
0

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

然后该名称可以在公式中使用。

于 2013-07-23T15:48:54.337 回答
0

另一种方法:

SO17814780 示例

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

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

SO17814780 第二个例子

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

于 2013-07-23T16:30:36.623 回答
0

每当您遇到公式问题时,请使用评估公式功能逐步检查公式,看看究竟是什么导致了问题。

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

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

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

于 2013-07-23T18:55:18.113 回答