|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
你的原程序能运行呀,速度挺快的。只不过数据算的不对,写的也不清晰,我修改了一下,你试试。
Sub test()
Sheet2.Range("b2:d20").ClearContents
Dim arr(), arr1()
Dim i, j As Integer
arr = Sheet1.[a1].CurrentRegion.Value2 '我一般不用这个,万一有空格呢
arr1 = Sheet2.Range("a1:d20") '因为上面的清除操作破坏了结构,所以直接用范围确定
For i = 2 To UBound(arr)
For j = 2 To UBound(arr1)
If arr(i, 2) = arr1(j, 1) Then
arr1(j, 2) = arr(i, 3) + arr1(j, 2)
arr1(j, 3) = arr(i, 4)
arr1(j, 4) = arr(i, 4) + arr1(j, 4)
End If
Next j
Next i
Sheet2.Range("a1:d20") = arr1
End Sub |
|