VBA 中 Range 和 Cells 的速度

概述

RangeCells这两个函数,均可以获取单元格内容和将内容写入单元格。既然这两个功能相同,那么速度就成为了选择的关键。函数

注:Range有着比Cells更强大的功能,你们千万不要把这两个函数彻底等同。固然了,这也从侧面反应了速度上必然Range更慢。测试

测试速度的代码

' 先用 Fill 填充内容,而后用 TestSpeet 测试速度。

Sub TestSpeet ()

For i = 1 To 100000 Step 1
    Cells(i, 1) = CStr(i)
Next i

End Sub

Sub test()

Dim i As Long
Dim a As String

For i = 1 To 100000 Step 1
    ' 下面四句中选一句执行
    a = Range("A" & CStr(i)) 'Range read
    a = Cells(i, 1)          'Cells read
    Cells(i, 1) = a          'Cells write
    Range("A" & CStr(i)) = a 'Range write
Next i

End Sub

测试结果

测试结果的时间单位是毫秒。code

第几回测试 Range read Cells read Range write Cells write
1 1019.9720 344.1759 6220.0159 5105.3813
2 1020.0355 346.0292 6216.2530 5103.4524
3 1020.8382 345.4371 6207.0230 5079.1922
4 1023.1144 344.1790 6198.1607 5090.5974
5 1018.8067 344.7482 6188.6159 5091.1590
6 1024.7189 344.8035 6181.9272 5085.4331
7 1017.7546 342.1849 6183.4536 5100.7955
8 1023.6095 344.1097 6188.9005 5074.8064
9 1015.5275 344.2437 6186.2355 5076.1584
10 1021.1321 343.7072 6187.4848 5083.3936

结论

不管读仍是写,使用Range进行转字符串再传入的方式,比Cells直接传入数值,要慢。字符串

因此应该优先使用Cellsit

相关文章
相关标签/搜索