SELECCIN Y BSQUEDA INTELIGENTE EN EXCEL
1. Creacin de la base de datos en una hoja que llamaremos Base Datos.
2. La bsqueda se puede realizar en las misma hoja o en una hoja diferente, para este
ejemplo se aplicara en la otra hoja que se llamara Busqueda.
3. En la nueva hoja se dejan filas en la parte superior para espacio de resultados arrojados
ms adelante y tener mayor manejo de informacin.
4. Se inserta una tabla dinmica con la base de datos en la ubicacin que deseamos se realice
la bsqueda, en el ejemplo la casilla B14. Para el ejemplo la tabla de datos est
comprendida en el rea de A1:D11.
Las etiquetas de fila de la tabla dinmica sern el criterio de bsqueda y para el ejemplo es
Nombre Completo
5. Los pasos a seguir son necesarios para evitar errores en los criterios de bsqueda; se
selecciona un dato cualquiera de la tabla dinmica y luego de dar click derecho se tiene:
Opciones de Tabla dinmica/Totales y Filtrosaqu se desmarcan todas las opciones en
totales generales, esto con el fin de omitir informacin irrelevante.
Por ultimo en las etiquetas de fila de la tabla dinmica desmarcamos todas las opciones y
seguimos al submen de filtros de etiqueta, aqu se escoge la opcin _Contiene.. con esto
se genera el primer criterio de bsqueda de palabras, en el cuadro emergente se coloca
cualquier valor alfabtico deseado y se da aceptar.
6. El siguiente paso es crear el cuadro de bsqueda con un control de texto Activex, este se
encuentra en la herramienta de Programador inmediatamente se escoge la opcin de
insertar y dentro de esta est el botn de cuadro de texto Activex, se selecciones y se
ubica del tamao deseado sobre la casilla de bsqueda, para el ejemplo se ubica en la
casilla B13.
7. A continuacin se realiza doble click sobre el cuadro de texto creado y se abre la opcin
Visual Basic de programacin en Excel, en esta hoja escribiremos el siguiente cdigo para
la creacin de la macro de bsqueda.
Las oraciones en azul sern explicaciones y en verde sern aplicables para el ejemplo del
manual:
Private Sub TextBox1_Change()
Application.ScreenUpdating = False
If TextBox1.Text = "" Then
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre Completo"-Nombre
lista que se desea buscar-).ClearAllFilters
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Columns(2).ColumnWidth = 70-tamao de la segunda columna de la hoja de
busquedaRange("A1-celda de conteo aritmtico importante para la bsqueda posterior").FormulaR1C1 = ""
Else
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").PivotFilters.Add Type:=xlCaptionContains,
Value1:=TextBox1.Text
Columns(2).ColumnWidth = 70
End If
End Sub El cdigo anterior crea una lista desplegable que se actualiza
automticamente con la base de datos------------------------------------------------------------------Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As
Boolean)
Application.ScreenUpdating = False
Cancel = True
If Not Intersect(Target, Range("B14:B24"-contador Celdas en tabla dinamica en
la hoja Busqueda, en total diez valores-)) Is Nothing Then
TextBox1.Text = ActiveCell.Text
Range("A1"-casilla conteo-).Value = WorksheetFunction.Match(TextBox1.Text,
Sheets("Base Datos").Range("B2:B11"-rango lista Nombre completo en hoja
Base Datos-), 0)
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Columns(2).ColumnWidth = 70
TextBox1.Activate
End If
End Sub control de doble click, seleccin lista desplegable y actualizacin
continua------------------------------------------------------------------Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
On Error Resume Next
If Not Intersect(Target, Range("B1"-celda no utilizable para evitar error-)) Is
Nothing Then
If Range("A1"-celda conteo-).Text <> "" Then
TextBox1.Text = WorksheetFunction.VLookup(Range("A1"-celda conteo- ),
Sheets("Base Datos").Range("B2:B11"-rango Nombre Completo en Base Datos), 2, False)
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").ClearAllFilters
ActiveSheet.PivotTables("Tabla dinmica1").PivotFields("Nombre
Completo").PivotFilters.Add Type:=xlCaptionEquals, Value1:=""
Columns(2).ColumnWidth = 70
Range("A1"-celda conteo-).Select
Else
TextBox1.Text = ""
End If
End If
End Sub termina la funcin de bsqueda y realiza el conteo aritmtico------------------------------------------------------------------------------------------------------------------------
Despus de escribir el cdigo se cierra la pagina de Visual Basic y procedemos a realizar
bsquedas en el cuadro de texto Activex, pero antes hay que desactivar la opcin de
Diseo en la Herramienta de Programador, dentro del cuadro texto se pueden digitar
palabras a fines o semejanza entre palabras, como CA esta relacionada con CAMILO o
CANO en el ejemplo:
El cdigo anterior realiza un conteo aritmtico de las filas en la base de datos teniendo en
cuenta un criterio de bsqueda por semejanza de palabras, por esta razn en la base de
datos la primera columna lleva un conteo de la misma manera para facilitar la bsqueda
que se presenta a continuacin.
8. Para completar la bsqueda hay que arrojar Salario y Ciudad, para esto se usa la
funcin BUSCARV de Excel acompaada por las funciones SI y ESERROR para evitar que
aparezcan celdas marcadas con error cuando la bsqueda est en blanco:
=SI(ESERROR(BUSCARV(=;=;=));"";BUSCARV(=;=;=))
Si se nota, lo nico importante en esta combinacin de funciones es lo que esta dentro de
la funcin BUSCARV, asi, se digita la combinacin de funciones en la celda donde se quiere
arrojar el resultado. Describe lo siguiente:
=BUSCARV(Celda de Conteo; Base de Datos donde realizar la bsqueda; N de la columna
del resultado deseado; Criterio de Exactitud (FALSO) o Aproximacin(VERDADERO)
Para el caso del ejemplo la funcin BUSCARV es:
Ciudad:
=BUSCARV(A1; 'Base Datos'!A2:D11;3;FALSO)
Salario:
=BUSCARV(A1; 'Base Datos'!A2:D11;4;FALSO)
La combinacin completa seria:
Ciudad:
=SI(ESERROR(BUSCARV(A1;
Datos'!A2:D11;3;FALSO))
'Base
Datos'!A2:D11;3;FALSO));"";BUSCARV(A1;
'Base
9. Con esto se concluye la busqueda inteligente, si se desea se pueden ocultar las filas de
Etiquetas de Filas (B14) y la fila de la celda de conteo (A1) para una mejor presentacin.
ES IMPORTANTE GUARDAR EL DOCUMENTO DE EXCEL COMO LIBRO DE EXCEL
HABILITADO PARA MACROS PARA QUE SE PERMITA USAR LAS MACROS EN CUALQUIER
MOMENTO. ESTO ESTA EN LA OPCIN DE GUARDAR COMO.