【问题标题】:Complex VLOOKUP with dynamic sheet name具有动态工作表名称的复杂 VLOOKUP
【发布时间】:2015-07-01 18:02:58
【问题描述】:

我正在尝试以一种优雅的方式跨多个工作表执行 vlookup,而不是使用嵌套在 IF 函数中的 vlookup。

A 列有帐号,I 列有负责该帐户的经理。每个经理都有自己的工作表。我希望通过 vlookup 查看特定经理的工作表,在 A 列中找到帐号,并在 K 列中返回信息。我尝试使用 INDIRECT 来做到这一点:

=VLOOKUP($A2,INDIRECT($I2 & "!$A:$P"),11,FALSE)

使用此代码,我不断得到#REF,而不是经理工作表中 K 列中的内容。我该如何解决这个问题?

谢谢!

【问题讨论】:

  • 确保 $I2 中的文本没有可能导致引用中断的空格或额外部分。使用 Trim() - =VLOOKUP(trim($A2),INDIRECT($I2 & "!$A:$P"),11,FALSE)
  • 我不知道你的数据是什么样的,但请记住,vlookup 只能从左到右起作用。如果您的“查找 ID”位于您正在查找的值的右侧,则您的函数将不起作用。
  • @user3578951,没有前导或尾随空格,所以我认为修剪不起作用
  • @Dr.Trey VLOOKUP 的第一个参数在 A 列中,我正在尝试在 K 列中返回信息,所以我应该可以接受。不过谢谢!

标签: vba excel vlookup


【解决方案1】:

我看不到您的电子表格,但如果您的工作表是以经理的名字命名的,我敢打赌,这些工作表名称有某种字符(如空格),会强制在单引号中引用工作表。

假设这是正确的,只需将您的公式更改为:

=VLOOKUP($A2,INDIRECT("'" & $I2 & "'!$A:$P"),11,FALSE)

您还可以使用“公式>公式审核”中的“评估公式”来诊断此问题,在那里逐步执行此公式的所有步骤,并注意该错误何时出现。

【讨论】:

  • 您说得对,工作表名称中有空格,没想到!但是,由于某种原因,该代码仍然无法正常工作。我会继续玩它,如果我能弄清楚,请告诉你。其他人建议使用修剪,但没有前导或尾随空格,只有名字和姓氏之间的空格,所以我认为你用单引号走在正确的轨道上
  • 我知道这段代码有效: =VLOOKUP($A2,INDIRECT("'John Smith'" & "!$A:$P"),11,FALSE) 我只需要让 John史密斯引用一个单元格值
  • 这么说你得到了#REF!我假设的所有经理都会出错,因为如果不是,那么我的下一个赌注是单元格和工作表名称之间存在一些拼写差异,在这种情况下,user3578951 的建议可能有助于检查尾随空格。
  • 您还能检查是INDIRECT 还是VLOOKUP 引发了错误?
  • 这是给我一个错误的 INDIRECT。我知道,因为当我将名称放在单引号中并将其加入 "!$A:$P" 时,vlookup 工作正常
猜你喜欢
  • 1970-01-01
  • 2013-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-09
  • 2021-02-25
相关资源
最近更新 更多