Cómo hacer una búsqueda en una macro de Excel con VBA (Visual BASIC for Applications)

Hoy recibí una pregunta interesante de parte de Jesús Reyes. ¿Cómo puedo hacer un VLOOKUP en VBA?

Aquí les anexo el código. Cuando lo intenté por primera vez me volvía loco porque trataba de usar Application.Worksheetfunction.Vlookup y si no lo encontraba, el programa tronaba y se iba al editor. La solución es usar Application.Vlookup (no importa el idioma en que tengan Excel, se usa VLOOKUP), guardar el resultado en una variable de tipo variante, y revisar si hay error antes de procesarlo.

Espero que les sirva. Esto es equivalente a:

=vlookup(buscar, a1:a5, 2, 0)

 

Share
Acerca de

Armando Franco tiene amplia experiencia en las áreas de sistemas, compras y proyectos. Cuenta con una Maestría en Administración de Tecnologías de Información, y las certificaciones Certified Purchasing Manager, Microsoft Office 2010 Specialist, Expert y Master.

9 Comentarios en “Cómo hacer una búsqueda en una macro de Excel con VBA (Visual BASIC for Applications)
  1. usuario excel dice:

    quice decir en la hoja1 el consecutivo inicia con (0001) con los ceros izquierda en este momento son iguales hoja1(0050) hoja2(0050) el problema es que si lo elimino hoja2 no se como hacer para que en ambas se vea (0049) si grabo un nuevo registro debe ser (0050) de nuevo ambas hojas gracias de nuevo.

  2. usuario excel dice:

    Hola Senor Armando estoy viendo su blog con algunos ejemplos desearía que me ayudara lo siguiente:

    Hoja1 celda B2 tengo consecutivo (0001), y en la hoja2 tengo varios registros desde B2 hasta P50, en la hoja2 el consecutivo se graba a partir de la celda B2, va en 0050 (001-002-003- hasta llegar a 0050) quiero realizar una macro que si borro un registro o consecutivo de la hoja2 (ejemplo l consecutivo 0010) en la hoja1 el consecutivo se devuelva a 49 por que se elimino 1, es decir el consecutivo en ambos hojas debe ser igual muchas gracias…

    espero lo publique aquí en su blog

    • Hola Carlos.

      Normalmente, si fueran empleados de una compañía, si sale el empleado 23 no quiero que el empleado 24 tenga el número 23, porque esto me traería problemas.

      ¿Cuál es el uso de esta aplicación?

  3. Cali dice:

    Hola Armando
    yo tengo un problema con la busqueda de datos me sale este error que a continuacion te muestro, no soy experto en el tema ojala me pudieran ayudar los campos que manejo son:
    N° DE ORDEN PARTIDA N° NOMBRES APELLIDOS FECHA DE NACIMIENTO FOLIO TOMO

    Sheets(“REG NAC”).Range(“A1:G5000”).AdvancedFilter Action:=xlFilterCopy, _
    CriteriaRange:=Range(“BUSCAR!Criteria”), CopyToRange:=Range( _
    “BUSCAR!Extract”), Unique:=False

  4. Mauricio Pulgarin dice:

    Cordial saludo,
    Buscarv o ConsultarV o vhlookup realizan una búsqueda en una matriz basándose en un dato ingresado el cual por defecto lo busca en una matriz en su primer columna, ¿qué pasa si no tengo el valor de la primer columna sino de la 2a o 3ra?… ejemplo

    columna1 colmna2 columna3 columna4
    nombre apellido edad color
    JUAN PEREZ 40 VERDE
    MARIA RAMIREZ 30 BLANCO
    LUIS PEREZ 50 NEGRO

    Si quiero que me traiga el nombre que pertenzca a los apellidos PEREZ como lo busco…la idea es que sea en código vba y no en fórmulas como “desref coincidir”

    agradezco de antemano tu atención.
    Saludos

    • Hola Mauricio.

      Una manera de hacerlo es grabar una macro y usar CTRL-F (en inglés) o CTRL-B (en español) para buscar.

      Eso generará la instrucción:

      Cells.Find(What:=”lo que buscas“, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
      :=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
      False, SearchFormat:=False).Activate

      y se puede modificar para que encuentre lo que se necesita.

      Saludos.

  5. Reyes Loren dice:

    Hola buenas noches.
    Disculpa si tienes una gran cantidad de información de números de partes y cada uno tiene sus características ninguna tienen las mismas dimensiones pero quieres hacer que cuando selecciones un numero de parte te aparezca solo las dimensiones de ese numero de parte sin que aparezcan las demás columnas.
    Como se puede hacer ?????

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

*

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.