将“间接”替换为“索引”以循环访问已关闭的工作簿



昨天,我开始了一个关于将某些工作簿中的单元格迭代到一个新的摘要工作簿的主题。为此,我使用了间接函数:

使用间接在工作簿之间循环访问

但是,

意识到间接的反向气流,我想实现同样的事情,但是通过使用 INDEX,正如我从论坛上读到的那样,即使引用的工作簿关闭,INDEX 也可以工作,而 INDIRECT 则不然。

然后,使用

 =INDEX(CONCATENATE("'C:Pathtofile[";O282;"]";$O$283;"'!";ADDRESS(11;KOLUMN()-23));1)
其中 O282 是我要引用的工作簿(以

这种方式引用,因为我需要迭代一些工作簿,如工作簿 2015-01 (O282)、2015-02 (P282) 等),O283 是相应工作簿的工作表,在本例中是静态的。我想用这个导入引用的工作簿和工作表中单元格 D12 的值,实际上 INDEX 就是这样做的。;1 用于指示我只想返回 1 个单元格。(我相信美国 excel 使用","而不是";")。

问题是它返回:

 'C:Pathtofile[2015-01]Data'!$D$11

所以基本上。INDEX 引用正确,但它返回路径而不是预期的值。

编辑:

我试过:

 =INDEX(CONCATENATE("'C:Pathtofile[";O282;"]";$O$283;"'!";ADDRESS(11;KOLUMN()-23):ADRESS(12;KOLUMN()-23));1)
获取数组 D12

:E12,然后引用第一个引用行的值,即 D12。虽然这不起作用,但它一直是避免与 INDEX 将我的输入解释为返回引用而不是值的平均值相关的问题的方法。

INDEX ,在你的例子中,有两个参数:引用和位置。您指定了地址,而不是引用,因此 Excel 将其理解为包含一个值的范围 - 这是您的地址并将其返回给您。您应该:

=INDEX(INDIRECT(CONCATENATE(...));1)

但是,当您使用引用范围内的第一个值时,您可以简单地执行以下操作:

=INDIRECT(CONCATENATE(...))

最新更新