- Tham gia
- 5/6/08
- Bài viết
- 30,703
- Được thích
- 53,963
Vậy cùng làm 1 thí nghiệm đơn giản nhéTôi nghĩ không hẳn là như vậy. Như trường hợp test code của Ba Tê
Tôi nghĩ nguyên nhân là như thế này:
Code của ThuNghi tính toán từng kết quả một và gán vào một Array. Sau khi tính hết sẽ gán kết quả của Array vào Vùng kết quả. Nếu dữ liệu ít thì cách này nhanh hơn. Nhưng nếu dữ liệu lớn, biến bạn dùng để lưu kết quả tạm (Là Array bạn dùng để lưu kết quả) sẽ chiếm tài nguyên nhiều hơn. Run code mà phải nhớ một biến có dung lượng càng lớn thì tốc độ của code sẽ càng chậm.
1> Dùng FormulaR1C1 rồi gán công thức thành Valule (không vòng lập)
PHP:
Sub Test1()
Dim i As Long, TG As Double
TG = Timer
With Range("A1:A30000")
.FormulaR1C1 = "=ROW()"
.Value = .Value
End With
MsgBox Format(Timer - TG, "0.0000000000")
End Sub
PHP:
Sub Test2()
Dim i As Long, TG As Double, Arr(1 To 30000, 1 To 1)
TG = Timer
For i = 1 To 30000
Arr(i, 1) = i
Next
Range("B1:B30000") = Arr
MsgBox Format(Timer - TG, "0.0000000000")
End Sub
Tham khảo tiếp bài này: http://www.giaiphapexcel.com/forum/showthread.php?7146-Đố-vui-về-VBA!&p=240348#post240348
Lần chỉnh sửa cuối: