我正在尝试用最快的方法在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)