使用Excel INDEX()函数的动态文件名

时间:2016-01-22 09:19:05

标签: excel vba indexing

我正在Excel中进行一些数据处理工作。我需要做的是从顺序编号的工作簿中获取Cell(Say D3)中的值,如1.xlsx,2.xlsx,3.xlsx ......等等。

我无法使用INDIRECT()函数,因为它需要打开所有目标文件(在我的情况下这是不可能的)。因此,我使用INDEX()函数,其值如下:

INDEX([ 1.xlsx ] Sheet1!D:D,1,1)

现在,我想根据左栏上的数字将公式的粗体部分变为动态,如下图所示: enter image description here 有人请建议解决手头的问题,因为我已经厌倦了谷歌搜索:)

提前致谢。

1 个答案:

答案 0 :(得分:0)

也许有人会证明我错了,但我不相信有可能在没有资源的情况下生成这样的动态引用,除非你对一个简单的(和静态)方法感到满意,例如:

=INDEX(CHOOSE(ROWS($1:1),[1.xlsx]Sheet1!D:D,[2.xlsx]Sheet1!D:D,[3.xlsx]Sheet1!D:D),1,1)

虽然这要求在公式中明确输入每个工作簿引用。因此,这也意味着无法通过引用工作表中的任何单元格来创建这些内容,正如您可能希望的那样。

或者,如果VBA是一个选项:

Sub Indexing()

Dim i As Long

For i = 2 To Cells(Rows.Count, 1).End(xlUp).Row
    Range("B" & i).Formula = "=INDEX([" & Range("A" & i).Value & ".xlsx]Sheet1!D:D,1,1)"
Next i

End Sub

此致