活动工作簿上的VBA循环WorksheetFunction.SumIf

我的代码打开几个.XLS文件,并使用Active Workbook进行SumIFfunction。 我的代码有一个问题,我评论'Pmax BM'Available Declaration'Generation Schedule (打印屏幕的CD E

我想这里是我的问题TW.Range(Cells(i, 1), Cells(i + 23, 1)=因为我设置了整个范围与SumIf的结果,这就是为什么我在该范围内有相同的结果。 `

 Dim data As Date Dim rng As Range Dim TW As Worksheet: Set TW = ThisWorkbook.Worksheets("Centralizator Lunar") i = 2 j = 20 StrFile = ThisWorkbook.Path StrFile = Dir(StrFile & "\*INT2*") Do While Len(StrFile) > 0 TW_P = ThisWorkbook.Path myfile = TW_P & "\" & StrFile Set AWb = Workbooks.Open(myfile) data = Left(ActiveWorkbook.Name, 10) nr_AWb = ActiveWorkbook.Worksheets("Sheet1").UsedRange.Rows.Count 'Data TW.Range(Cells(i, 1), Cells(i + 23, 1)) = data 'Pmax BM TW.Range(Cells(i, 3), Cells(i + 23, 3)) = WorksheetFunction.SumIf(AWb.Worksheets("Sheet1").Range("D20:D" & nr_AWb), _ AWb.Worksheets("Sheet1").Cells(j, 4), _ AWb.Worksheets("Sheet1").Range("N20:N" & nr_AWb)) 'Available Declaration TW.Range(Cells(i, 4), Cells(i + 23, 4)) = WorksheetFunction.SumIf(AWb.Worksheets("Sheet1").Range("D20:D" & nr_AWb), _ AWb.Worksheets("Sheet1").Cells(j, 4), _ AWb.Worksheets("Sheet1").Range("I20:I" & nr_AWb)) 'Generation Schedule TW.Range(Cells(i, 5), Cells(i + 23, 5)) = WorksheetFunction.SumIf(AWb.Worksheets("Sheet1").Range("D20:D" & nr_AWb), _ AWb.Worksheets("Sheet1").Cells(j, 4), _ AWb.Worksheets("Sheet1").Range("H20:H" & nr_AWb)) i = i + 24 j = j + 1 StrFile = Dir ActiveWindow.Close SaveChanges:=False Loop 

我不明白你在问什么,但已经对你的代码进行了一些修改,可能会解决你的问题(添加工作表引用到范围):

 Dim data As Date Dim rng As Range Dim TW As Worksheet: Set TW = ThisWorkbook.Worksheets("Centralizator Lunar") i = 2 j = 20 StrFile = ThisWorkbook.Path StrFile = Dir(StrFile & "\*INT2*") Do While Len(StrFile) > 0 TW_P = ThisWorkbook.Path myfile = TW_P & "\" & StrFile Set AWb = Workbooks.Open(myfile) data = Left(ActiveWorkbook.Name, 10) nr_AWb = ActiveWorkbook.Worksheets("Sheet1").UsedRange.Rows.Count 'Data TW.Range(TW.Cells(i, 1), TW.Cells(i + 23, 1)) = data 'Pmax BM TW.Range(TW.Cells(i, 3), TW.Cells(i + 23, 3)) = WorksheetFunction.SumIf(AWb.Worksheets("Sheet1").Range("D20:D" & nr_AWb), _ AWb.Worksheets("Sheet1").Cells(j, 4), _ AWb.Worksheets("Sheet1").Range("N20:N" & nr_AWb)) 'Available Declaration TW.Range(TW.Cells(i, 4), TW.Cells(i + 23, 4)) = WorksheetFunction.SumIf(AWb.Worksheets("Sheet1").Range("D20:D" & nr_AWb), _ AWb.Worksheets("Sheet1").Cells(j, 4), _ AWb.Worksheets("Sheet1").Range("I20:I" & nr_AWb)) 'Generation Schedule TW.Range(TW.Cells(i, 5), TW.Cells(i + 23, 5)) = WorksheetFunction.SumIf(AWb.Worksheets("Sheet1").Range("D20:D" & nr_AWb), _ AWb.Worksheets("Sheet1").Cells(j, 4), _ AWb.Worksheets("Sheet1").Range("H20:H" & nr_AWb)) i = i + 24 j = j + 1 StrFile = Dir ActiveWindow.Close SaveChanges:=False Loop