2017-02-19 56 views
2

我有两张数据,其中匹配的数据在不匹配的行中。嵌套间接()函数返回#REF

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

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

这里是我的代码:

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

所以应该指向,名为“联合ICME + ipShocks列表”表,在A列中的细胞与细胞H3当前工作表上确定的行。

用一个简单的单元格(例如H3)取代了我为第二个Indirect()写的东西,所以我怀疑它与我写的第二个Indirect()有关。

+0

是'INDIRECT(“A”&H3)'数字或有效单元格地址的值吗?好像你没有列出''A'&(' – Slai

+0

@Slai它应该是一个有效的单元格地址,H3只是一个数字,所以它应该是A的值(H3的值)“Combined ICME + ipShocks List“ – Colin

+1

有没有理由不能使用'= INDIRECT(”'Combined ICME + ipShocks List'!A'&H3)'或更好呢,'= INDEX('Combined ICME + ipShocks List'!A:A ,H3)'? – Jeeped

回答

3

要回答这个问题,为什么这将引发一个错误:

间接需求解析为一个单元地址的文本值

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

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

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

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

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

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

既然你知道工作表名称和列,仅行号是变量。在这种情况下,间接是矫枉过正。只有在需要使用公式构建图纸名称时才使用间接。