I am running an asset management project in excel. Using a connection with an SQL database I am able to import large numbers of maintenance plans.
Based on what I im
Just extended the code from here: Performance difference between looping range vs looping array
Range tested: A1:A100000
Read/Write Cell = 15,765625 seconds
Read/Write Array = 0,203125 seconds
Read Cell = 0,37109375 seconds
Read Array = 0,0234375 seconds
Read Interior Color = 1,421875 seconds
So you have the direct comparison between reading color vs reading array value too.
Option Explicit
Const strRANGE_ADDRESS As String = "A1:A100000"
Sub LoopRangeReadWrite()
Dim r As Range
Dim lStart As Double
Dim lEnd As Double
lStart = Timer
For Each r In Range(strRANGE_ADDRESS)
r.Value = r.Value + 1
Next r
lEnd = Timer
Debug.Print "Read/Write Cell = " & (lEnd - lStart) & " seconds"
End Sub
Sub LoopArrayAddOne()
Dim varArray As Variant
Dim var As Variant
Dim lStart As Double
Dim lEnd As Double
lStart = Timer
varArray = Range(strRANGE_ADDRESS).Value
For Each var In varArray
var = var + 1
Next var
Range(strRANGE_ADDRESS).Value = varArray
lEnd = Timer
Debug.Print "Read/Write Array = " & (lEnd - lStart) & " seconds"
End Sub
Sub LoopRangeReadColor()
Dim r As Range
Dim lStart As Double
Dim lEnd As Double
Dim a As Long
lStart = Timer
For Each r In Range(strRANGE_ADDRESS)
a = r.Interior.Color
Next r
lEnd = Timer
Debug.Print "Read Interior Color = " & (lEnd - lStart) & " seconds"
End Sub
Sub LoopRangeReadValue()
Dim r As Range
Dim lStart As Double
Dim lEnd As Double
Dim a As Variant
lStart = Timer
For Each r In Range(strRANGE_ADDRESS)
a = r.Value
Next r
lEnd = Timer
Debug.Print "Read Cell = " & (lEnd - lStart) & " seconds"
End Sub
Sub LoopArrayValue()
Dim varArray As Variant
Dim var As Variant
Dim lStart As Double
Dim lEnd As Double
lStart = Timer
varArray = Range(strRANGE_ADDRESS).Value
For Each var In varArray
var = var + 1
Next var
lEnd = Timer
Debug.Print "Read Array = " & (lEnd - lStart) & " seconds"
End Sub
There seems to be a performance difference indeed. I just checked a cell's value and a cell's interior colour for one hundred million times and there are clear differences:
Checking the value : 456 seconds
Checking the colour: 1281 seconds
In other words: checking the values goes ±2.8 times faster (following this single simple experiment).