代码未按预期执行(详情请参阅下文了解详情)
摘要
我将3美元的金额总和,使用36个XL文件(命名约定和文件路径除了使用的月份之外是相同的)。我的目的地XL是 B1到B36 的单元格,每月一个单元格,来源XL使用工作表Sum_Total单元格 A4 (所有36个XL文件都相同)
命名和文件路径约定:
T:\folder1\folder2\2010\201001\201001.xls
T:\folder1\folder2\2011\201105\201105.xls
T:\folder1\folder2\2012\201212\201212.xls
理想情况下,我希望细胞B1到B36具有以下公式:
='T:\folder1\folder2\2010\201001\[201001.xls]Sum_plan'!$A$4
='T:\folder1\folder2\2011\201101\[201101.xls]Sum_plan'!$A$4
A1到A36的单元格将命名为:
A1 = 201001
A4 = 201004
A36 = 201212
这是我迄今为止的代码。宏运行成功,但没有给出我想要的内容。
Sub sum()
Dim ThisMonth As Integer 'will be A3 thru A36 to show 201001,201002,...
Dim SlidingRange As Integer 'B3 thru B36 to show destination location
For ThisMonth = 1 To 36
For SlidingRange = 1 To 36
Range("B" & SlidingRange).Formula = "'T:\folder1\folder2\" & Left("A" & ThisMonth, 4) & "\" & "A" & ThisMonth\["&ThisMonth&".xls]Sum_Total'!$A$4"
Next SlidingRange
Next ThisMonth
End Sub
代码实际上给了我什么......
从B1到B36的每一行都重复这个
'T:\folder1\folder2\A36\A36\[A36.xls]Sum_total'!$A$4
答案 0 :(得分:2)
您使用错误的语法限定范围,并且您有两个循环。
更新到此:
For ThisMonth = 1 To 36
Dim sYear as String, sMonth as String
sYear = Left(Range("A" & ThisMonth).Value,4)
sMonth = Range("A" & ThisMonth).Value
Range("B" & ThisMonth).Formula = "'T:\folder1\folder2\" & sYear & "\" & sMonth & "\[" & sMonth & ".xls]Sum_Total'!$A$4"
Next ThisMonth