【发布时间】:2015-10-06 14:18:41
【问题描述】:
昨天我开始了一个关于将单元格从一些工作簿迭代到一个新的摘要工作簿的主题。为此,我使用了 INDIRECT 函数:
Iterate between workbooks using INDIRECT
但是,实现 INDIRECT 的反向草案我想实现相同的目标,但是通过使用 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 相关的问题的方法,将我的输入解释为返回引用而不是值的平均值。
【问题讨论】:
-
即使引用的工作簿关闭,索引仍然有效?这不是真的。它只会显示缓存的值。如果源工作簿发生更改,则在刷新工作簿连接(实际上是重新打开引用的文件)之前,您将看不到目标中的更改。
-
如果我理解正确的话。通过由同事“手动”添加新的每月数据来手动更新引用的文件。然后目标文件中的索引功能会自动更新吗?还是我需要亲自打开文件以更新目标文件?你知道任何其他功能可以做我所追求的吗?
-
只有当源文件和目标文件都打开时,目标文件中的值才会更新。然后,如果您保存目标文件,新值将被缓存并在您下次打开文件时显示(即使源文件此时已关闭)。如果您需要在不打开源文件的情况下获取信息,则只能通过 VBA 完成。
-
哦,那我完全误解了 INDEX。但是话又说回来,每月只打开一次文件必须被认为是可行的,因为要打开的文件很少,所以我将继续使用 INDEX。只要我不需要每次检查摘要文件时都打开它们。你知道为什么公式只返回路径吗?
-
好的,请看下面我的回答。
标签: excel excel-formula