嵌套的Indirect()函数返回#REF

时间:2017-02-19 18:36:10

标签: excel excel-formula

我有两张数据,匹配的行数不匹配。

在一张纸上,我有一个值列表。

另一方面,我有一个数字列表,这些数字对应于第一张工作表上的行号,其中包含我尝试自动复制到第二张工作表的匹配值。

这是我的代码:

=INDIRECT("'Combined ICME+ipShocks List'!"&(INDIRECT("A"&H3)))

所以它应该指向名为"组合ICME + ipShocks List"的工作表,A列中的单元格,其中行由当前工作表上的单元格H3确定。

用一个简单的单元格(例如H3)替换我为第二个Indirect()所写的内容是有效的,所以我怀疑它与我写的第二个Indirect()有关。

1 个答案:

答案 0 :(得分:3)

回答这个问题为什么会抛出错误:

间接需要文本值才能解析为单元格地址。

在您的公式中,您正在嵌套两个Indirect()函数。

内部间接将解析为A1之类的单元格引用(作为参考,而不是文本)。然后,您将该单元格引用与字符串连接,并将其提供给外部Indirect()。这就是导致错误的原因。间接期望一个字符串。您正在为它添加一个与单元格引用连接的字符串,这不是任何函数都能理解的组合。

如果只是在字符串常量中包含列字母,则根本不需要内部间接。

=INDIRECT("'Combined ICME+ipShocks List'!A"&H3)

请注意,Indirect是易失性的,只要任何单元格发生变化,都会导致重新计算工作簿。这可能会让你的工作簿变慢。间接应该非常谨慎地使用。在这种情况下,可以使用索引,如Jeeped在对您的问题的评论中所建议的那样。

=INDEX('Combined ICME+ipShocks List'!A:A,H3)

由于您知道工作表名称和列,因此只有行号是变量。在这种情况下,间接是过度的。仅在需要使用公式构造工作表名称时才使用间接。