Búsqueda Inteligente en Excel sin formulario ActiveX (versión simplificada) Cont

Esta entrada es la continuación de la entrada anterior. Veremos otro método alternativo para lograr “Búsquedas inteligentes en Excel”. La gran diferencia es que en vez de buscar una “palabra clave” vamos a buscar una “frase clave”. Para este caso en particular, la frase esta compuesta por dos palabras separadas por un espacio.
El procedimiento consta de crear dos variables, una variable guarda la primera parte de la frase, palabra 1 y la otra la palabra dos.
En este caso el código es unidireccional, es decir que siempre busca primero la palabra 1 y luego de la 1 la palabra 2. Sin embargo con el código adecuado se puede hacer bidireccional.
Lo mismo aplica para el caso del largo de la frase, en este caso se utilizan dos palabras, pero puede hacerse para varias más.
El código a utilizar sigue el mismo razonamiento que en la entrada anterior, macros modificadas,  solo que utilizamos otra posibilidad de filtrado en la tabla dinámica.
En una hoja tenemos los datos, que es la misma base de datos que utilizamos en el ejemplo de  anterior.

En formulario utilizado es el mismo que el post anterior.
Recuerdan que el formulario tenía los siguientes campos:
o   Campo ID
o   Campo Ubicación
o   Campo Teléfono
o   Campo Puesto

Seguimos utilizando una tabla dinámica con el campo “Nombre Completo”. Pero como ven en la figura, ahora responde a dos palabras claves separadas por un espacio, o una frase.

Macro Modificada:
Lo único que debemos variar es la macro principal que trabaja con los cambios del “textbox” y cambiando el filtro de la tabla dinámica.
El código es el siguiente:
-------------------------------------------------------------------------------------------------------------------------
Private Sub TextBox1_Change()
Application.ScreenUpdating = False
ActiveSheet.PivotTables("Tabla dinámica1").PivotCache.Refresh
‘utilizamos un inStr para saber si el texto introducido tiene algún espacio.
If InStr(1, TextBox1.Text, " ", vbTextCompare) > 0 Then
‘creo dos variables que representan las dos partes del texto introducido.
parte1 = Left(TextBox1.Text, InStr(1, TextBox1.Text, " ", vbTextCompare) - 1)
parte2 = Right(TextBox1.Text, Len(TextBox1.Text) - InStr(1, TextBox1.Text, " ", vbTextCompare))
‘si el textbox pasa a vacio , se resetea el filtro de la tabla dinámica.
If TextBox1.Text = "" Then
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Range("D4").Value = ""
TextBox1.Activate
Columns(4).ColumnWidth = 30.29
Else
‘sino es vacio, hacemos filtro con la forma << PALABRA 1 + * + PALABRA 2 + *>>
‘el asterisco representa cualquier juego de caracteres.
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").PivotFilters.Add Type:=xlCaptionContains, Value1:=parte1 & "*" & parte2 & "*"
Columns(4).ColumnWidth = 30.29
End If
Else
‘el código siguiente es el mismo código que se utilizo en el post anterior, así que no hablaremos mas de los mismo.
If TextBox1.Text = "" Then
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Range("D4").Value = ""
TextBox1.Activate
Columns(4).ColumnWidth = 30.29
 Else
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinámica1").PivotFields("NOMBRE COMPLETO").PivotFilters.Add Type:=xlCaptionContains, Value1:=TextBox1.Text
Columns(4).ColumnWidth = 30.29
End If
End If
End Sub
-------------------------------------------------------------------------------------------------------------------------
El código anterior no es de lo mas eficiente pero a lo fines prácticos funciona muy bien. Además pueden ver los pasos lógicos que se realizan modificando la macro básica.
El resto del código queda invariable, es decir, como se mostraba en el post anterior.
Para recibir las actualizaciones se pueden inscribir por alguno de los medios, o pueden compartirlo en sus redes sociales. Además pueden revisar la página de Descargas dónde iremos colgando algunos ejemplos.
Éxitos!
Keys:
·         Búsqueda inteligente en Excel
·         Búsqueda incremental en Excel

3 comentarios:

Cristina Paz dijo...

Como puedo obtener la clave para modificar el archivo?

Juan Pablo Torres dijo...

Hola amigo, cómo estas! Gracias por tus comentarios!
La idea es tomar el archivo o la idea de referencia. En este caso están protegidos los objetos solamente pero esa es la idea.
Esperamos tus comentarios.
Saludos

ANIBAL3 dijo...

Gracias infinitas por compartir tus conocimientos. ese Don es de pocos. Por favor si fuese posible quisiera que me ayudes en este archivo como hacer para que busque en varias hojas y no en una sola hoja. Gracias por tu ayuda.