VBA - 将40个XL文件中的1个单元格引用到40行

时间:2017-03-13 19:47:55

标签: vba excel-vba excel

代码未按预期执行(详情请参阅下文了解详情)

  1. 它不是读取A1到A36的单元格的内容,而只是返回“A36”。
  2. 对于B1到B36的所有记录,它返回A36。所以循环搞砸了。我预计A1为B1,A10为B10等。
  3. 摘要

    我将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
    

1 个答案:

答案 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