En este artículo vamos a seguir viendo el tema de “búsqueda
inteligente en Excel” (a pedido de la gente) usando un formulario que nos
muestra las sugerencias o los elementos que coinciden con la palabra
introducida. Ya hemos visto varios artículos al respecto pero siempre es un
tema apasionante ya que nos resulta extremadamente útil a la hora de trabajar
con mucha información y sobre todo para facilitarnos nuestro trabajo.
En el blog damos herramientas, elementos e ideas útiles para
sumar a nuestro conocimiento, capacidad y habilidades en cuanto a Excel. La
comprensión de estas herramientas depende de nuestro nivel de conocimiento, habilidades
y entendimiento. Es por eso que estudiamos varias opciones de las más simples a
las más complejas. Siempre recomendamos empezar con lo más simple e ir sumando
complejidad hasta llegar a lo más avanzado e incluso lograr crear nuestras
propias herramientas.
El video relacionado esta cargado en nuestro
canal de YouTube “ExcelminiApps”. Sino directamente a través de este link o click en la imagen.
Como hacemos siempre vamos a utilizar una mini aplicación,
una plantilla, de ejemplo para mostrar la idea.
Utilizamos elementos que ya habíamos utilizados en otros
artículos:
- Base de datos de empleados de una empresa ficticia. Esta hoja tiene un botón que denominamos buscar y que lanza el formulario de búsqueda.
- Formulario de búsqueda Construido en la plataforma VBA. El formulario es un ejemplo, podemos utilizar con formato, propiedades y cantidad de información que necesitemos de acuerdo a nuestra mini aplicación.
Por otro lado vamos a utilizar algunos de los conceptos vistos
en los siguientes artículos relacionados (de la lista de
artículos del blog):
- Agenda en Excel
- Agenda Excel (buscar registro)
- Base de datos sencilla en Excel
- Formulario de Búsqueda en Excel
- Búsqueda inteligente con Combobox en Excel
- Formulario de entrada de datos en Excel con macro
- Formulario ActiveX de entrada de datos
- Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada)
- Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada) Cont
- Mini Motor de Búsqueda en Excel sin Macros
- Ingreso, búsqueda y modificación de datos en Excel con Formulario ActiveX
- Formulario ActiveX con Combobox
- Búsqueda con palabra clave en formulario ActiveX con Combobox
- Entrada - Salida de Stock en Excel (Versión Simple)
- Búsqueda con Hipervínculos (BuscarV con hipervínculos)
Trataremos de hacer la explicación
lo más simple posible.
Funcionamiento:
En primer lugar vamos a ver cómo funciona, básicamente
tenemos una hoja con los datos “Base de Datos de Empleados”. Arriba a la
derecha tenemos el botón para lanzar el formulario de búsqueda.
Una vez lanzado vemos el formulario con algunos campos y un
botón llamado “cerrar” su única función es cerrar el formulario.
Los campos son:
- ID: es el código único que identifica al empleado, es una lista desplegable.
- Nombre: del empleado.
- Teléfono
- Puesto
- Ubicación:
La búsqueda se puede realizar de dos maneras:
- Búsqueda por ID: Conociendo el ID del empleado, seleccionamos de la lista o directamente lo introducimos mediante teclado. De esta manera nos mostrara todos los datos de ese ID. Para esto deberíamos acordarnos “qué ID corresponde a qué persona”. Un tanto arduo.
- Búsqueda por palabra clave o nombre: resulta más interesante buscar una persona conociendo una parte del nombre. Es mucho más fácil, porque en general es lo que podemos recordar mejor o algún colaborador puede tener esa pista. Lo revolucionario o sofisticado en este método es que es automático, a medida que escribimos parte del nombre nos aparece las sugerencias listadas y podemos elegir el que estamos buscando.
.Procedimiento:
En
este caso, ya habiamos hablado de utilizar el formulario y la base de datos.
Estos elementos los habiamos usado en otros artculos así que no vamos a hablar
de cómo construirlos. El elemento que vamos a sumar es una tabla dinamica.
La tabla dinamica va a cumplir la misma utilidad que
habiamos visto en “Búsqueda Inteligente en Excel sin
formulario ActiveX (versión simplificada)”. El procedimiento es el
mismo pero en vez de utilizar la hoja de Excel utilizamos un formulario. Es lo
que habíamos estado diciendo, con todo lo visto tranquilamente podemos llegar a
esta última funcionalidad.
Lo que
hacemos básicamente es que cada vez que cambia un dato sobre el campo “nombre”
se traslada el dato al filtro de la tabla dinámica y luego que está actualizada
se vuelcan los datos del filtro al combobox de campo nombre. Es tan simple como
eso.
Veamos
un ejemplo, introducimos la palabra “jua” como aproximación a buscar un Juan o
los Juan’s que estén en nuestra base de datos.
Como podemos ver tenemos, a la izquierda, la tabla dinámica
filtrada con “jua” y a la derecha otra tabla con la lista completa de nombres y
códigos concatenados como uno solo (son los datos para crear la tabla dinámica).
También podemos ver un número que indica la cantidad de coincidencias
encontradas. En este caso 2 (dos).
Ya
tenemos todos los elementos, logramos de alguna manera obtener las
coincidencias para nuestras búsquedas, ahora lo único que hay que hacer es
utilizar un código para poder llevar la lista de coincidencias a nuestra lista
de combobox. Esto ya lo habíamos visto pero vamos a recordar.
1 –
Utilizar Worksheet >> Change para llevar los datos introducidos en el
campo nombre al filtro de la tabla dinámica.
2 –
Listar las coincidencias como una lista del combobox.
Código
Ahora vamos a ver el código de aquello no conocido, en
este caso de lo que hace cuando introducimos un dato en el campo “nombre” que
es un combobox. Y cuando seleccionamos un dato de este combo. Lo demás lo
habíamos visto.
INICIO CODIGOS----------------------------------------
Sub
Name1_Change()
If id.Value = "" Then 'evito recurrencia
id.Locked = True 'bloqueo id
name1.RowSource
= "" 'borro los datos del combo
'hago el filtrado de la tabla dinámica
ActiveSheet.PivotTables("Tabla
dinámica1").PivotFields("Nombre Completo").ClearAllFilters
ActiveSheet.PivotTables("Tabla
dinámica1").PivotFields("Nombre Completo").PivotFilters.Add
Type:=xlCaptionContains, Value1:=name1.Value
name1.RowSource =
"h7:h" & 7 + Range("h5").Value
'cargo los ítems del combo
name1.DropDown 'despliego la lista de coincidencias
End If
End
Sub
------------------------------------------------------
Ahora vamos a ver el código de cuando hacemos click sobre algún
elemento de la lista del combo:
-------------------------------
Sub name1_Click()
Private Sub name1_Click()
ID1 = Val(Left(name1.Value, 4))
'recupero el id
id.Text = ID1
name1.Text =
Application.WorksheetFunction.VLookup(ID1, Range("b7:F26"), 2, False)
tel1.Text =
Application.WorksheetFunction.VLookup(ID1, Range("b7:F26"), 3, False)
'muestro el tel correspondiente
ubi1.Text = Application.WorksheetFunction.VLookup(ID1,
Range("b7:F26"), 4, False) 'muestro
ubicación correspondiente
pues1.Text =
Application.WorksheetFunction.VLookup(ID1, Range("b7:F26"), 5, False)
End Sub
Por supuesto que la tabla dinámica, y la lista concatenada
son datos que nos sirven para el propósito buscado. Estos datos no se deben ver
en la ejecución de la mini app, aquí los mostramos con fines didácticos. Se
pueden ocultar en la misma hoja o se puede utilizar una hoja auxiliar como
usamos siempre y luego ocultar y
proteger esta hoja.
Como ven no es muy complicado y además es sencillo.
¡Esperamos que les haya gustado la idea y vean lo fácil que
es!
-------------------------------------- FIN CÓDIGOS
Recuerden que los artículos algunas veces requieren un
mayor o menor nivel de conocimiento en ciertos temas de Excel, por ejemplo
formulas avanzadas, macros o VBA, etc. Sin embargo en los artículos se nombran
todos los elementos y con esta información podemos hacer nuestras pequeñas
investigaciones usando internet, así desarrollamos nuestro conocimiento. Por
ejemplo si utilizamos la función “Y”,
que la suponemos conocida, y no sabemos ¿qué es? podemos buscar en internet
para ver como se utiliza y cuáles son los componentes. Las mini aplicaciones no
son más que la recopilación de muchos elementos para dar forma a una nueva
idea.
Pueden descargar algunos ejemplos
(plantillas/templates) de la zona de Descargas y
también la Tienda Si tienen
alguna duda o consulta pueden hacerlo a través del formulario de contacto.
Les recomendamos que sigan el
blog por alguno de los medios, mail o por redes sociales, para recibir las
actualizaciones y novedades.
¡Éxitos!
Keys:
·
Búsqueda inteligente en Excel con combobox
·
Search engine en Excel.
·
Búsqueda en Excel con autorrelleno.
·
Búsqueda en Excel con sugerencias.
10 comentarios:
Donde esta "Listar las coincidencias como una lista del combobox" se supone es una previa al tema actual, estoy dando vuentas en todo tu blog y no lo encuentro, deberias dejar el link de referencia cuando dices esta parte ya lo hicimos.
Hola amigo, cómo estas! Gracias por escribirnos!
En el artículo dejamos todos los links, sin embargo la característica del blog es que los elementos/herramientas que utilizamos en un artículo los podemos usar en otros. Cada artículo tiene su particularidad.
En cuanto a listar las coincidencias del combo, hay dos formas, una es listar con el código "combobox.additem" i que añade un elemento a la vez y la otra más fácil es utilizar la propiedad del combo llamada "RowSource" que se puede ver en el código. Por ejemplo " name1.RowSource = "h7:h" & 7 + Range("h5").Value 'cargo los ítems del combo.
Esperamos tus comentarios o nos puedes escribir directamente mediante el formulario de contacto.
Saludos
HOLA DONDE PODRIA DESCARAGR LA HOJA DE CALCULO?
hola como haría si la base de catos de consulta se encuentra en otro libro
Hola amigo, cómo estas! Gracias por tus comentarios!
En la zona de descargas y en la tienda están las plantillas disponibles. En cuanto al ejemplo se dejo la tabla dinámica en la misma hoja para que se pueda ver el proceso pero no hay problema de utilizarlo desde otra hoja, hay que cambiar los rangos de referencia nada más.
A tu disposición, Saludos.
como puedo adquirir la plantilla ..buen aporte amigo
Hola amigo, cómo estas! Gracias por tus comentarios!
Revisa la zona de descargas y la tienda.
Saludos
Hola amigo, cómo estas! Gracias por escribirnos!
En cuánto a tu consulta, tienes que entender bien el concepto y luego verás que lo puedes aplicar a todo. Hemos tratado de hacer el árticulo lo más simple posible y además hemos hecho varios sobre este tema. Parece simple pero es algo un tanto complejo para excel. Sin embargo lo podrás logras si interpretas bien lo que hace cada parte del código.
Esperamos tus comentarios.
Saludos
HOLA BUENAS! GRACIAS POR EL VIDEO, MUY BUENO. SABES ME SALTA UN ERROR AL APRETAR LA FLECHA (ABAJO) EL EXCEL COMO QUE COLAPSA Y SE CIERRA. ALGUNA FORMA DE EVITAR ESO?
SALUDOS
Publicar un comentario