概述
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轉存
。