Te presento 3 macros para evitar el BuscarV en una celda. El paso a paso lo encontrarás en el video 29 de mi canal. Allí encontrarás además el enlace al blog desde donde podrás descargar el libro con los 3 ejemplos.
1- Con instrucción FIND. Por ejemplo:
Sub macro_set() 'buscar un dato en un rango
'x Elsamatilde
'busca el dato de la celda seleccionada en tabla Hoja2 col B
dato = ActiveCell.Value
'se declara la hoja de la base
Set ho2 = Sheets("Hoja2")
'se guarda en una variable el resultado de la búsqueda
Set busco = ho2.Range("B:H").Find(dato, LookIn:=xlValues, Lookat:=xlWhole)
'si el dato no se encuentra devuelve un mensaje, sino el valor de la col G
If busco Is Nothing Then
ActiveCell.Offset(0, 1) = "Dato no encontrado."
Else
'se guarda en celda de col siguiente el valor de col G del dato encontrado
ActiveCell.Offset(0, 1) = ho2.Range("G" & busco.Row)
End If
End Sub
2- Devolviendo el resultado de la función BuscarV en VBA:
Sub macro_resulta() 'devuelve el resultado de la función BUSCARV
'x Elsamatilde
'busca el dato de la celda seleccionada en col B de la Hoja2
dato = ActiveCell.Value
Set ho2 = Sheets("Hoja2")
'controla posible dato no encontrado
On Error Resume Next
'el resultado se ubica en col siguiente a la de la celda activa
ActiveCell.Offset(0, 1) = Application.WorksheetFunction.VLookup(dato, ho2.Range("B:G"), 6, False)
'si la función devolvió error se coloca un texto aclaratorio
If Err.Number > 0 Then ActiveCell.Offset(0, 1) = "NO encontrado"
End Sub
3- Colocando, desde VBA, la función BUSCARV en la hoja.
Sub macro_formula() 'coloca fórmula con BUSCARV
'x Elsamatilde
ActiveCell.Offset(0, 1).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-1],Hoja2!C2:C12,6,FALSE),0)"
End Sub
La fórmula devuelta será con control de error, de este modo:
=SI.ERROR(BUSCARV(B15;Hoja2!$B:$L;6;FALSO);0)