Are you talking about Ron DeBruin? His site includes in it's eaxamples
a function that returns the number of the last row:
Function LastRow(sh As Worksheet)
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
It's very easy to use and highly effective. The only situation I've
found where it didn't work perfectly is on a filtered dataset.
Here's some code that does what you mentioned in your post:
Sub way()
Dim lastR As Long
Dim ws As Worksheet
Dim sumE As Double
Set ws = Sheet1 'put your sheet reference here
lastR = LastRow(ws) 'get the number of the last row
'use the number of the last row to define the range
sumE = Application.Sum(ws.Range("e2:e" & lastR))
'you didn't mention what you were doing with the sum _
of column e, so I just stored it in variable sumE
Dim c As Range
'again use the number of the last row to define the range
For Each c In ws.Range("f2:f" & lastR)
If c.Value = "R" Then
c.Offset(0, 1).Value = c.Offset(0, -1).Value
Else
c.Offset(0, 2).Value = c.Offset(0, -1).Value
End If
Next c
End Sub
Function LastRow(sh As Worksheet)
'copied from _
http://www.rondebruin.nl/copy1.htm _
near the bottom of the page
On Error Resume Next
LastRow = sh.Cells.Find(What:="*", _
After:=sh.Range("A1"), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
End Function
Cliff Edwards