View Single Post
  #1   Report Post  
Posted to microsoft.public.excel.programming
Lars Uffmann Lars Uffmann is offline
external usenet poster
 
Posts: 35
Default using a formula for a column vs. looping over each row - speed difference?

Hey again,

Does anyone have an idea what the speed differences are between for example:

Dim lastRow As Long
lastRow = Cells.Find("*", SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious).Row

' (oldWs and newWs are WorkSheets)

' Method 1
oldWs.Range("B2:B" & lastRow).Formula = "If (RC[-1]=""yes"", 1, 0)"
newWs.Columns(1).Value = oldWs.Columns(1).Value

' Method 2
Dim i As Long
For i = 2 To lastRow
If (oldWs.Cells(i, 1).Value = "yes") Then
newWs.Cells(i, 1).Value = 1
Else
newWs.Cells(i, 1).Value = 0
End If
Next i

In theory, I'd see Method 1 as doing a redundant operation by
calculating the values into a new (later obsolete) column of the old
sheet, then copying the values of that, while Method 2 directly
calculates the values of the final column. However, I don't know how
optimized operations on Ranges are in Excel, so can someone give me an
input on which Method would be faster on large datasets, and if Method 1
is faster then by how much? Thanks!

Lars