How about this UDF.
Option Explicit
Public Function LastValue(StrName As String, ColOffset As Long) As Double
Dim Cel As Range
With Range("A:A")
Set Cel = .Find(What:=StrName, LookIn:=xlValues, LookAt:=xlWhole, _
MatchCase:=True, SearchDirection:=xlPrevious, After:=Range("A1"))
If Not Cel Is Nothing Then
LastValue = Val(Cel.Offset(0, ColOffset).Value)
End If
End With
Set Cel = Nothing
End Function
Sub Macro1()
Dim x As Double
x = LastValue("Smith", 1)
MsgBox x
End Sub
You can also use the function in a worksheet cell.
ColOffset is the number of columns you want to offset to get the value. So if the names are in column A and the values are in column B, then the ColOffset would be 1.