【问题标题】:Vlookup with a predefined and named range具有预定义和命名范围的 Vlookup
【发布时间】:2013-07-23 15:39:23
【问题描述】:

我正在尝试将 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)。 任何人都可以尝试帮助我吗?

【问题讨论】:

  • 是的,你写的这个公式得到了VANS的结果。例如,结果是数字 0,07。
  • 抱歉造成误会。我的意思是 B1、C1 和 D1 具有定义的数组名称,该名称在另一个工作表中定义。因此,我为 3 个不同的矩阵定义了名称“Cars”、“Vans”、“Trucks”,并且我希望每一列 VLOOKUP 在其中一个树中。
  • 绝对没问题。首先,你在帮助我,我非常感谢。其次,我不确定我是否理解您的问题,但 CARS 是“=OFFSET(base!$E$2;0;0;base!$O$8;2)”之类的范围,在“base”表中。跨度>
  • 如果你能放一张你的表结构的图像(从你得到汽车、货车等的地方,这会有所帮助)
  • 很抱歉这个问题,但我怎样才能发布图片?

标签: excel vlookup


【解决方案1】:

你很亲密。替换:

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

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

【讨论】:

  • ; 的所有内容,具体取决于他的 excel 设置。
  • 对不起,这是一个类型错误!我现在才编辑!问题依旧!
  • 这很奇怪。我已经对上述内容进行了快速测试(为 CARS、VANS 和 TRUCKS 创建小型命名范围),这对我有用。也许只需检查它们是否都是数字字段,并且您没有一组文本,例如在另一个的命名范围和编号中。
  • 是的,这很奇怪。 VANS、CARS 和 TRUCKS 范围在另一个计划中的事实意味着什么?请记住,它在同一个工作簿中
  • 我也检查了内容。但这不是问题。当我使用 'VLOOKUP($A2,VANS,2,FALSE)' 时,我可以得到正确的结果
【解决方案2】:

在两种情况下会出现#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.

【讨论】:

  • 其实那边的 Table_array 就是 NAME OF THE CELL RANGE,不仅仅是那个 cell。例如,范围单元格 VANS 是另一个 PLAN 中的 100x2 矩阵。
  • @Luiz:我指的是这个:VLOOKUP($A2,INDIRECT(B1),2,FALSE)
  • 是的,我想 'indirect(b1)' 引用 B1 中命名的数组
  • 不行,我没用过INDEX,你会怎么用?
  • 现在它们是我自己生成的(打字),但我希望它们从另一张纸上转置
【解决方案3】:

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

那么这个名字就可以在公式中使用了。

【讨论】:

  • 是的,实际上,我已经这样做了,我将我的单元格范围命名为 VANS、TRUCKS 和 CARS,我想通过它们的名称访问它们!
  • 请检查您是命名了单个单元格还是命名了整个列。 Vlookup 仅适用于列。
  • 我发现了这个缺陷......事实上,vlookup 仅在传递的索引在范围内时才有效,因此单列是不够的。您必须命名一个包含搜索值和所需结果的范围。您可以将其更改为 MatchIndex 方法,它们将接受单列(不是单个单元格)
  • 实际上,我正在寻找的是一个日期,它在范围内。我刚刚编辑了我的例子就知道了。误会见谅
【解决方案4】:

另一种方法:

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

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

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

【讨论】:

  • 对不起,我并没有真正理解你在解释什么。哪个范围“数组”?还有哪个 G1:J10?
  • 是的,我做到了。名称 VANS CARS 和 TRUCKS 是单元格范围的定义名称。但它没有用!
【解决方案5】:

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

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

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

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

【讨论】:

  • 非常感谢,马上去找!
  • 我得到了你所说的错误...'VLOOKUP(2,#REF!,2,FALSE)'。查看名称管理器后,我检查了我的范围确实存在!太尴尬了!
  • 所以当您说它存在时,您是在说 (1) Name 列中的名称是“CARS”,(2) 您可以在 Value 列中看到 CARS 的所有值,( 3) Refers To 列具有这些单元格的位置(即像 Sheet1!$A$1:$B$4 之类的东西),并且 (4) Scope 列具有“工作簿”?
  • 是的,几乎所有问题。 (1)、(3) 和 (4) 是的。另外,@pnuts,范围是指工作簿。但是(2)的值是“{...}”,但我认为这是因为 CARS 不仅仅是一列
  • 尽可能扩展值列;它应该至少显示一些值。如果没有,那么您需要单击名称管理器窗口底部文本框右侧的蓝色按钮,以转到 Excel 使用“CARS”时所指的确切位置。在那里,确保数据符合预期
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-09-07
  • 1970-01-01
  • 2020-10-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-21
相关资源
最近更新 更多