概述
Cells属性
、Range对象
、Array转存
这三种调用方法,都可以都可以读取单元格中的内容。既然这它们功能相同,那么速度就成为了选择的关键。
测试速度的代码
' 先用 Fill 填充内容,然后用 TestSpeetCells、TestSpeetRange、TestSpeetArray 测试速度。
Sub Fill()
Range("A99982").NumberFormatLocal = "@"
For i = 1 To 100000 Step 1
Cells(i, 1) = CStr(i)
Next i
End Sub
Sub TestSpeetCells() '测试 Cells属性 的速度
Dim i As Long
Dim a As String
For i = 1 To 100000 Step 1
a = Sheets(5).Cells(i, 1)
Next i
End Sub
Sub TestSpeetRange() '测试 Range对象 的速度
Dim i As Long
Dim a As String
Dim c As Range
Set c = Sheets(5).Range("A1:A100000")
For i = 1 To 100000 Step 1
a = c(i, 1)
Next i
End Sub
Sub TestSpeetArray() '测试 Array转存 的速度
Dim i As Long
Dim a As String
Dim c As Variant
c = Sheets(5).Range("A1:A100000")
For i = 1 To 100000 Step 1
a = c(i, 1)
Next i
End Sub
测试结果
测试结果的时间单位是毫秒。
第几次测试 | Cells属性 |
Range对象 |
Array转存 |
|
---|---|---|---|---|
1 | 541.9597 | 233.8098 | 21.8212 | |
2 | 537.5843 | 234.8304 | 21.5427 | |
3 | 540.0026 | 236.7964 | 21.7300 | |
4 | 544.2964 | 234.8777 | 21.6883 | |
5 | 542.2027 | 234.5648 | 21.8825 | |
6 | 545.6543 | 232.6115 | 21.7464 | |
7 | 543.3828 | 235.7805 | 21.6648 | |
8 | 541.7655 | 236.0788 | 21.7365 | |
9 | 541.7720 | 233.1813 | 21.7217 | |
10 | 541.8308 | 232.8468 | 21.7146 |
结论
使用Cells属性
和Range对象
比Array转存
要慢。
所以应该优先使用Array转存
。