Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado
Logo Excel Avanzado

Buscarv con VBA

| 6 comentarios

BUSCARV es una de las funciones más importantes en Excel, ya que tiene como finalidad encontrar datos en una tabla o rango de celdas. Esta función depende de 4 argumentos para que la función pueda encontrar la ubicación de la celda, en donde se ubica el dato.

1. Valor_buscado: debe contener un indicador que sirva para reconocer la el valor buscado.

2. Matriz_buscar_en: es el rango de la tabla en donde se encuentre el valor buscado.

3. Indicador_columnas: es la columna en la que se encuentre el valor buscado

4. Ordenado: tenemos 2 opciones 1/VERDADERO, el cual indica que no podría encontrar un dato o uno similar; por otro lado, tenemos la opción 0/FALSO, la cual nos indica que solo coincidirá con el dato exacto.

La función tiene como finalidad la búsqueda de un dato, a partir de ciertas “coordenadas” que nos permitan hallar la ubicación del dato buscado.

En caso desees revisar el detalle completo de esta función visita: BUSCARV

 

Uso de la función Buscarv

Las dos maneras de usar la función BUSCARV como fórmula de Excel.

Primera: En la celda donde queramos que se refleje el dato buscado colocamos la fórmula, siguiendo la sintaxis:

“=BUSCARV(valor_buscado(celda);Matriz_Buscar_en(rango);Indicador_columnas(#de la columna);Ordenado(VERDADERO/FALSO))”

Por ejemplo:

Contamos con la siguiente tabla

Buscarv Matriz buscar en

 

Ahora en la celda en donde queremos que se ubique el valor buscado la seleccionamos y colocamos los datos necesitados.

Ejemplo Buscarv

Vemos que la colocar "=BUSCARV("  automáticamente nos aparece la ayuda que nos recuerda los 4 argumentos que debemos colocar.

En este caso el (valor_buscado) es el código del trabajador, la (matriz_buscar_en) es A3:D12, el (indicador_columnas) es la tercera columna y el (ordenado) es FALSO.

 

Segunda forma

Nos dirigimos a “Mas funciones” o "insertar función" en la barra de herramientas del Excel.

Luego, nos saldrá una ventana para buscar cualquier función disponible en la base de dato, colocamos “BUSCARV” y le damos aceptar.

Finalmente completamos todos los argumentos requeridos por el BUSCARV 

 

Argumentos Buscarv

 

En caso desees revisar con mayor detalle como utilizar esta función visita: BUSCARV

 

Uso de Buscarv con VBA

 

Una vez conocido el concepto de la función BUSCARV; ahora veamos la opción de utilizar esta función con el editor VBA (Visual Basic); en el cual, mediante el uso códigos, nos permite obtener el mismo resultado.

Recomendación: En caso no tenga activado el Programador/Desarrollador, consultar el siguiente enlace: Introducción a VBA, en donde podrá ver los pasos para habilitar la ficha programador y crear un módulo en el que se encontrará la macros a usar en los siguientes pasos. 

 

En la “Programador o Desarrollador”, nos dirigimos a la opción “Visual Basic”, una vez que le demos click nos dirigirá al editor. En la parte superior izquierda encontraremos el explorador de proyectos.

Creamos un nuevo módulo, dándole click derecho a la carpeta “Módulos” >> insertar >> módulo.

Colocamos el siguiente código, en el cual destaca la función Vlookup, ya que es la referente a BUSCARV en el código de VBA.

El código también emplea los 4 argumentos solicitados por la fórmula de Excel;

Valor buscado

Matriz empleada

Orden de la columna

FALSO(0)/VERDADERO(1)

 

Sin embargo, se emplearon Variables como “Valorb”, “Descuento”, “FinalRow” y “PRange” para facilitar la lectura del código, ya que a estas variables se les asigno un valor al inicio de la macro.

Ejemplo de Buscarv con VBA

Sub BUSCARV ()

Dim Valorb

Dim Descuento

Dim FinalRow As Long

Dim PRange As Range

'la variable Valorb es aquella que contendrá la ubicación del valor correspondiente a la misma fila del valor buscado.

'la variable Descuento es la que contiene la función Vlookup, aquella que nos permitirá ingresar los 4 argumentos de la función BUSCARV.

Sheets("Hoja1").Select

Valorb = Sheets("Hoja1").Range("H16").Value

'se necesita de la expresión Application para que la función Vlookup funcione.

'la variable FinalRow abarca hasta la ultima fila (llena)

FinalRow = Worksheets("Hoja1").Cells(Rows.Count, 1).End(xlUp).Row

'La variable PRange reselecciona todos los datos de la tabla desde la celda (3,1) hasta la ultima fila y la columna 4).

Set PRange = Cells(3, 1).Resize(FinalRow, 4)

Descuento = Application.Vlookup(Valorb, Range("A3:D12"), 3, 0)

'Por último, le otorgamos el a la celda H17 el valor de la variable Descuento, más el signo de porcentaje.

Range("h17").Value = Descuento & "%"

End Sub

 

Por ultimo agregamos un botón que nos dirija a la macro  “BUSCARV”. Ese botón lo podemos hallar en la opción Desarrollador/Programador en la sección “Insertar” y se abrirá la sección de “Controles de formulario”.

En el siguiente enlace se puede descargar el ejemplo mostrado: Buscarv con VBA Ejemplo

 

Creado por: Camila Ines Poma Ticona

6 comentarios

  1. Hola... todo muy bonito si...
    pero como hago para poder trabajar con códigos de barras que trabaja con números de 13 dígitos, y el buscarV no me funciona creo que debe de ser por el tipo de variable peor no se cual usar

    • si es un simple codigo de barras tratalo como una cadena , es decir si no vas ha acer operaciones con el , de lo contrario usa long o variant

  2. Hola, soy muy muy nuevo en vba y tengo una duda con esta macro ya que no me funciona con un archivo. ¿El nombre del archivo donde vamos a buscar los datos puede tener un espacio? Es decir, llamarse ejemplo ejemplo.xlsx, o debe ser ejemplo_ejemplo? Si lo pongo de esta forma sí funciona pero si no no

    • El nombre del archivo no tiene nada que ver

  3. Hola ¿Qué tal? Excelente aporte, muy práctico y bien explicado,gracias.
    Tengo una duda ¿Si quiero hacer buscarv (o vlookup) en vba pero teniendo en cuenta dos conceptos? ¿Cómo modificaría el código?
    Muchas gracias.

  4. Hola, en caso de que el buscarV me de un error: #N/D, "VALOR ¿cómo hacer para que me de un MsgBox diciendo que el valor no fue encontrado?

Deja una respuesta

Los campos requeridos estan marcados con *.