No necesariamente se requieren macros para estas búsquedas. Por ejemplo:
= INDICE(licencias!$A$1:$D$5000; MAX(SI((A2 = licencias!$A$1:$A$5000); FILA(licencias!$A$1:$A$5000))); 2)
te entrega el nombre (por el "2" que vemos al final).
En cuanto a la función personalizada, te diría que -intrínsecamente- está bien hecha. La podrías resumir un poco... por ejemplo:
Código PHP:
Function BuscaLicencia(Rut, b As Byte)
Dim C As Range
With Sheets("licencias")
Set C = .Range(.[a1], .[a1].End(xlDown)).Find(Rut, LookIn:=xlValues, _
SearchDirection:=xlPrevious, LookAt:=xlWhole)
If C Is Nothing Then Exit Function
BuscaLicencia = C.Offset(, b)
End With
Set C = Nothing
End Function
pero sería "más de lo mismo".
Quizás si detectas un problema concreto y muestras un archivo como para analizar la situación, pueda indicarte más detalles.
Haz tus pruebas/evaluaciones y comenta, ¿Sí?
Saludos, Cacho R.