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)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Option Explicit Sub Buscador() Dim Resultado As Variant Dim Buscar As String Buscar = InputBox("Buscar") Resultado = Application.VLookup(Buscar, Range("a1:b5"), 2, 0) If IsError(Resultado) Then MsgBox "No lo encontré" Else MsgBox Resultado End If End Sub |
Hola Armando, soy nuevo en macros y necesito tu ayuda.
Tengo una tabla desde V1(DNI), W1(CLASE), X1(APELLIDO), Y1(NOMBRES).
En la celda B5 ingreso el dni y necesito que me busque en V$ y cargue el apellido & nombres en la celda C5, y así sucesivamente en las demás b$ y c$.
Todo tiene que ser en tiempo real, creería que es con Private Sub Worksheet_Change(ByVal Target As Range)
Desde ya, muchísimas gracias.
Hola.
¿Por qué necesitas una macro? Me parece que ese es el comportamiento normal del VLOOKUP / BUSCARV.
En C5 escribes la fórmula siguiente:
= iferror(vlookup(b5,V:Y,4,0) & » » & vlookup(b5,V:Y,3,0),»»)
= SI.ERROR(BUSCARV(b5,V:Y,4,0)& » » & BUSCARV(b5,V:Y,3,0),»»)
Los símbolos que aparecen como » deben ser comillas dobles. Me aparece a mí como otro símbolo.
Buenas soy nueva en hacer macros pero voy a intentarlo, lo que pasa es que tengo una base de datos con libros donde tengo ahi casillas como: editorial, referencia, nombre del libro, autor, precio colombiano, y cuantos hay en existencia. en otra hoja tengo las ordenes de pedido con casillas como: numero de orden de pedido, fecha de requisicion, correo electrónico, dirección, celular, estudiante, descuento por ser adulto mayor, o descuento por ser estudiante, nombre del libro, y total con descuento, lo que yo quiero hacer es que cuando yo coloque el nombre del libro me lleve a la base de datos , mire la existencia y me vaya descontando el numero de libros a medida que yo hago el pedido, me coja la referencia y me la traiga a mi hoja numero dos de pedidos, y el nombre de autor. como podría hacer?
Hola Dani.
¿Tienes Access? Te pregunto porque si en Access eliges Nueva – Base de datos te aparece un modelo de biblioteca de préstamos. Este ejemplo incluye una base de datos completa que me parece que hace lo que necesitas y más.
Es más sencillo hacerlo ahí que en Excel.
Saludos.
Armando.
Hola!
Me podrías ayudar, quiero jalar datos de un archivo a otro, pero ponerlos en la fila que de el folio que corresponde…Como le hago?
Gracias!!
Hola Montserrat.
¿Me puedes dar más detalles, por favor? Me parece que lo que mencionas es justamente el VLOOKUP. ¿Qué falta?
Saludos.
Armando.
COMO PUEDO ENCONTRAR EL ULTIMO REGISTRO DE UN TRABAJADOR PERO QUE EN LA COLUMNA DE RECIBOS NO ESTE CANCELADO.
¡Qué buena pregunta! Se puede hacer con fórmulas matriciales.
Supongamos que tienes una tabla llamada «Recibos». Esta tabla tiene tres columnas: Clave (del trabajador), Estatus y Recibo. Puede tener más columnas pero no nos interesan.
Usarías esta fórmula:
=INDICE(recibos[Recibo],MAX(SI((recibos[Clave]=F2)*(recibos[Estatus] <> "cancelado"),FILA(recibos[Estatus]))))
o en inglés:
=INDEX(recibos[Recibo],MAX(IF((recibos[Clave]=F2)*(recibos[Estatus] <> "cancelado"),ROW(recibos[Estatus]))))
Regresará el valor del Recibo que esté en el último renglón que coincida con el número de empleado que escribas en F2 y que no diga «Cancelado» en la columna de Estatus.
Saludos.
Armando
Hola me gustaría un poco de ayuda tengo una base de datos que cuenta con los siguientes campos, Id Empleado, Apellido, Nombre, Sección, facultad, Cargo, Salario, Fecha Comienzo y Fecha Nacimiento, quiero hace una macro que realiza las consultas cuando elegía el código del empleado y que me mande a mostrar sus datos luego otra macro que me genere un informe o reporte de los datos encontrados
Hola.
Prueba a ver si algo como esto te sirve:
https://www.youtube.com/watch?v=yboThWR04V4
Saludos.
Armando.
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.
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?
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
Hola Cali.
Necesitaría conocer también el texto del mensaje de error, porque ese nada más es el código de la macro, y no sé por qué está fallando.
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.
hola buenas tardes quiero crear un buscador en visual basic 2017 para que me busque la palabra o numero que desee en un documento de excel, y como soy nuevo en esto no tengo gran conocimiento sobre el tema agradecería su ayuda gracias.
Necesito más detalles. ¿Te sirve la función de búsqueda de Excel que se accesa con Ctrl F en inglés y Ctrl B en español? De no ser así, ¿qué es lo que se tiene que hacer en Visual Basic?
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 ?????
Se necesita usar VLOOKUP / BUSCARV / CONSULTAV.
http://www.auval.com.mx/notas/guia-rapida-para-usar-vlookup-buscarv-consultav/