Also, further from last....I have the following in a module called "PublicSubs" so they can be referenced (for finding the column or the last cell)
Function Last(choice As String, rng As Range)
'Purpose: Find LAST row, col or cell address
Dim lrow As Long
Dim lcol As Long
Select Case choice
Case "Row"
On Error Resume Next
Last = rng.Find(What:="*", _
after:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
Case "Col"
On Error Resume Next
Last = rng.Find(What:="*", _
after:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
Case "Cell"
On Error Resume Next
lrow = rng.Find(What:="*", _
after:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByRows, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Row
On Error GoTo 0
On Error Resume Next
lcol = rng.Find(What:="*", _
after:=rng.Cells(1), _
Lookat:=xlPart, _
LookIn:=xlFormulas, _
SearchOrder:=xlByColumns, _
SearchDirection:=xlPrevious, _
MatchCase:=False).Column
On Error GoTo 0
On Error Resume Next
Last = rng.Parent.Cells(lrow, lcol).Address(False, False)
If Err.Number > 0 Then
Last = rng.Cells(1).Address(False, False)
Err.Clear
End If
On Error GoTo 0
End Select
End Function
Function FindFieldCol(ByRef oWS As Worksheet, sField As String) As Long
'Purpose: Find column position of a field in an XML data sheet
Dim c As Long, nLastCol As Long
nLastCol = Last("Col", oWS.UsedRange)
FindFieldCol = 0
For c = 1 To nLastCol
If oWS.Cells(1, c) = Trim(sField) Then FindFieldCol = c
Next c
End Function