簡體   English   中英

活動工作簿上的 VBA 循環 WorksheetFunction.SumIf

[英]VBA Loop WorksheetFunction.SumIf on Active Workbook

我的代碼打開幾個 .XLS 文件,並使用 Active Workbook 生成SumIF函數。 我的代碼有一個問題,我評論'Pmax BM'Available Declaration'Generation Schedule (打印屏幕中的C D 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM