我可以想到两个选择:
选项1
使用Copy
, Paste Special
,Add
Sub AddStep()
Dim rng1 As Range, rng2 As Range
Set rng1 = Range([A1], [A1].End(xlDown))
Set rng2 = rng1.Offset(, 1)
rng2.Copy
rng1.PasteSpecial xlPasteValues, xlPasteSpecialOperationAdd
Application.CutCopyMode = False
End Sub
选项 2
循环一个变体数组。这比在一个范围内循环要快得多
Sub AddStep()
Dim rng As Range
Dim dat As Variant
Dim i As Long
Set rng = Range([B1], [A1].End(xlDown))
dat = rng
For i = LBound(dat, 1) To UBound(dat, 1)
dat(i, 1) = dat(i, 1) + dat(i, 2)
Next
rng = dat
End Sub
选项 1 更快,但在某些情况下最好避免使用剪贴板。
对 1,000,000 行样本进行测试:
选项 1 - 435 毫秒
选项 2 - 2589 毫秒