现在我有一个宏 PopulateYearlyValues
但在我看来它花费的时间太长了
Sub PopulateYearlyValues(ByVal Month As Range)
Dim c As Double
Dim s As Double
c = Application.WorksheetFunction.Match(UCase(Month.Value), ActiveSheet.Range("AA5:AX5"), 0)
s = (ActiveSheet.Range("AA5").Column - 1)
With ActiveSheet
Dim i As Integer
Dim j As Integer
For i = 7 To 44
.Range("G" & i).Value = 0
.Range("H" & i).Value = 0
For j = 1 To c
.Range("G" & i).Value = (.Range("G" & i).Value + .Cells(i, s).Offset(0, j))
.Range("H" & i).Value = (.Range("H" & i).Value + .Cells(i, s).Offset(0, (j + 1)))
j = j + 1
Next j
Next i
End With
End Sub
我有一个范围 G7:H44
需要填充范围 AA7:AX44
的 SUM
但是..它只是每个其他专栏:
If Month.Value = "January"
G7 = SUM(AA7)
H7 = SUM(AB7)
...
G44 = SUM(AA44)
H44 = SUM(AB44)
End If
If Month.Value = "April"
G7 = SUM(AA7, AC7, AE7, AG7)
H7 = SUM(AB7, AD7, AF7, AH7)
...
G44 = SUM(AA44, AC44, AE44, AG44)
H44 = SUM(AB44, AD44, AF44, AH44)
End If
但是我的宏占用的时间太长了..还有其他方法吗?
最佳答案
您可以尝试将计算设置为手动并禁用 ScreenUpdating 等常用的 vba 优化方法。
Dim calc As XlCalculation
calc = Application.Calculation
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = True
Application.Calculation = calc
将您的代码或函数调用放在 Application.Calculation = xlCalculationManual
和 Application.ScreenUpdating = True
之间
关于vba - 加速 Excel 宏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3061424/