Me interesan macros para sustituir buscarv

Quisiera una macro que permita sustitutir la función BuscarV

2 Respuestas

Respuesta
2

Puedes poner un ejemplo de la función que intentas sustituir.

Es decir, pon aquí la función que tienes en la celda.

En cuál celda está la función.

Cómo se llama la hoja o las hojas.

Nota: Una cosa que debes tener en cuenta cuando haces una pregunta en un foro ... las personas a las que solicitas ayuda no saben absolutamente nada acerca de tus datos, absolutamente nada sobre cómo están en el libro de trabajo, absolutamente nada sobre lo que tú quieres que se haga con él y absolutamente nada sobre cómo quieres el resultado ... debes ser muy específico al describir cada una de estas áreas, en detalle, y no debes suponer que seremos capaces de "resolverlo" por nuestra cuenta. Recuerda, nos estás pidiendo ayuda ... así que ayúdanos, brindando la información que necesitamos para hacerlo, incluso si esa información te parece "obvia" (recuerda, sólo es obvia para ti porque estás familiarizado con tus datos, su diseño y el objetivo general para ellos).

Respuesta
2

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)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas