相关疑难解决方法(0)

如何在Excel中的数组上使用VBA执行SumIf

我正在尝试用最快的方法在Excel中对具有大约的数据集执行SumIf函数.110'000行.我想出了三种方法,但没有一种方法令人满意.

这是我试过的第一个:在我的电脑上执行时间100秒!

    Sub Test1_WorksheetFunction()

Dim MaxRow As Long, MaxCol As Long
Dim i As Long
Dim StartTimer, EndTimer, UsedTime

StartTimer = Now()

With wsTest
    MaxRow = .UsedRange.Rows.Count
    MaxCol = .UsedRange.Columns.Count

    For i = 2 To MaxRow
        .Cells(i, 4) = WorksheetFunction.SumIf(wsData.Range("G2:G108840"), .Cells(i, 1), wsData.Range("R2:R108840"))
    Next i

End With

EndTimer = Now()
MsgBox (DateDiff("s", StartTimer, EndTimer))

End Sub
Run Code Online (Sandbox Code Playgroud)

这是第二种方法:执行时间在55秒时好一点

Sub Test2_Formula_and_Copy()

Dim MaxRow As Long, MaxCol As Long
Dim i As Long
Dim StartTimer, EndTimer, UsedTime

StartTimer = Now()

With wsTest
    MaxRow …
Run Code Online (Sandbox Code Playgroud)

excel vba excel-vba excel-2010

2
推荐指数
1
解决办法
3万
查看次数

标签 统计

excel ×1

excel-2010 ×1

excel-vba ×1

vba ×1