FUNCIONES DE BUSQUEDA BUSCARV – BUSCAR H BUSCARV es una de las funciones de búsqueda y referencia más conocidas y utilizadas (si no la única) por las grandes masas. Esta función busca un valor dado en la primera columna de una tabla (matriz) y devuelve el dato que está x número de columnas a la derecha de ese valor. La sintaxis de esta función es la siguiente: BUSCARV(valor_buscado, matriz_buscar_en, indicador_columnas, ordenado) Supongamos que tenemos un directorio de teléfonos y direcciones, en el rango A1:C1000. En la primera columna tenemos los nombres de nuestros contactos (no necesariamente ordenados), en la segunda tenemos sus correspondientes números telefónicos y en la tercera tenemos sus direcciones. Si queremos buscar el teléfono de Smith, escribimos la siguiente fórmula: =BUSCARV("smith", A1:C1000, 2, FALSO) Escribo Smith con minúsculas por comodidad y porque la función no es sensible a mayúsculas y minúsculas. En matriz_buscar_en incluimos todo el rango que ocupa el directorio. Indicador_columnas es 2 porque los teléfonos están en la columna 2 del directorio (si buscáramos la dirección de Smith escribiríamos 3 como tercer argumento). El último argumento (ordenado), que en mi opinión debería llamarse "aproximado" o algo así, puede ser FALSO o VERDADERO. Si es FALSO, BUSCARV buscará una coincidencia exacta en los datos; si no la encuentra, devolverá #N/A. Por el contrario, si el el argumento es VERDADERO, BUSCARV buscará la coincidencia más cercana inferior al valor buscado. En los casos como este, en los que buscamos una coincidencia exacta, es muy importante establecer el cuarto argumento a FALSO, ya que si lo omitimos, Excel considerará que es VERDADERO, con la posibilidad de obtener un resultado incorrecto en nuestras fórmulas. Casi siempre será correcto establecerlo a FALSO. Habrá sin embargo, casos en los que deberemos poner este argumento como VERDADERO, como cuando deseamos saber a que rango de valores pertenece cierto valor. Supongamos que deseamos saber la comisión que debemos pagar a cierto vendedor según su alcance de ventas. Si el vendedor tiene un alcance de 0 a 70%, le pagaremos 0% de comisión; si tiene de 71 a 100% de alcance, le pagamos un 5%; y si tiene más de 100%, le pagaremos el 6%. Elaboramos entonces la siguiente tabla de comisiones: Supongamos que su alcance real fue del 98%. Para saber que porcentaje de comisión le corresponde al vendedor, usamos la siguiente fórmula: =BUSCARV(B6, A1:B4, 2, VERDADERO) La cual devuelve 5%. 71% es el valor más alto inferior al número buscado (98%). De haber puesto el último argumento FALSO, habríamos obtenido #N/A, lo cual no nos sirve. La ayuda on-line para esta función nos amplía un poco más: "Ordenado: Valor lógico que especifica si BUSCARV va a buscar una coincidencia exacta o aproximada: Si se omite o es VERDADERO, se devolverá una coincidencia exacta o aproximada. Si no localiza ninguna coincidencia exacta, devolverá el siguiente valor más alto inferior a valor_buscado. Los valores de la primera columna de matriz_buscar_en deben estar clasificados según un criterio de ordenación ascendente; en caso contrario, es posible que BUSCARV no devuelva el valor correcto. ... Si es FALSO, BUSCARV sólo buscará una coincidencia exacta. En este caso, no es necesario ordenar los valores de la primera columna de matriz_buscar_en. Si hay dos o más valores en la primera columna de matriz_buscar_en, se utilizará el primer valor encontrado. Si no se encuentra una coincidencia exacta, se devolverá el valor de error #N/A. ... Si Ordenado es FALSO y valor_buscado es un valor de texto, se pueden utilizar los caracteres comodín de signo de interrogación (?) y asterisco (*) en el argumento valor_buscado. El signo de interrogación corresponde a un solo carácter cualquiera y el asterisco equivale a cualquier secuencia de caracteres. Si lo que desea buscar es un signo de interrogación o un asterisco, escriba una tilde (~) antes del carácter." Ejemplo BDMAX y BDMIN en Excel. Tengo en A1 a A10 rangos con fecha y hora de las llamadas hechas y en B1 a B10 el nombre del agente; y lo que debo de hacer es obtener el mínimo y el máximo registro de cada agente. ... Lo resolveré esta vez empleando funciones para Base de datos, y en concreto las funciones: BDMIN(base de datos; campo; rango de criterios) BDMAX(base de datos; campo; rango de criterios) Aplicaremos estas fórmulas sobre nuestro listado: Aprovecharemos de nuestro ejemplo anterior que teníamos una celda validada en E3, para definirlos como 'Rango de criterios' en nuestras funciones de Base de datos. Interpretaré las funciones dadas. Para obtener el mínimo valor: =BDMIN($A$1:$B$11;"Hora";$E$2:$E$3) preguntamos a Excel de la Base de datos definida por el Rango $A$1:$B$11, cuál es el valor mínimo del campo 'Hora', para aquellos registros que cumplan los criterios dados en el rango $E$2:$E$3, i.e., aquellos registros en los que para el campo 'Agente' tengamos elementos igual al valor de E3. De igual forma, para el valor máximo: =BDMAX($A$1:$B$11;"Hora";$E$2:$E$3) de nuestra Base de datos obtendremos el valor máximo para los registros en los que coincida el elemento del campo 'Agente' ccon el valor de E3. BDSUMA Si tuviéramos la siguiente tabla de datos y necesitáramos conocer la suma de los importes que correspondan al rango de fechas en tu ejemplo, del 30/07/09 al 7/08/09 : Lógicamente sabemos que debemos aplicar la función =BDSUMA(base de datos; campo ;criterios) que en nuestro ejemplo sería: Es decir, la suma de los 'Importes' de los registros (cuentas de gasto) que cumplen la condición dada, es decir, que la fecha se encuentre entre el 30/07/2009 y el 07/08/2009, es de 43.850,00 eur. Recordemos brevemente el funcionamiento de esta función de Excel BDSUMA. En el primer argumento seleccionamos el rango de celdas de nuestra base de datos, por tanto, incluímos la cabecera de los títulos. En el segundo argumento de la función indicamos qué campo deseamos que nos sume, acumulando aquellos registros que cumplan las condiciones del tercer argumento. Por último el tercer argumento, el más importante, ya que sin éste, tendríamos una función SUMA normal. En este punto, os remito a la entrada comentada Funciones para bases de datos; si bien comentaré un punto importante, y es que dos condiciones en la misma línea o fila de la hoja de cálculo equivale a exigir el cumplimiento simultáneo (es decir al Y), sin embargo que se encuentren en distintas líneas nos permite un cumplimiento alternativo, esto es, que se cumpla una condición o bien la otra (es decir el O); siempre, en los casos de condición directa-no con fórmula asociada a la base de datos- con el Nombre del campo encima de las condiciones. FILTROS EN EXCEL Filtrar una lista no es ni más ni menos que de todos los registros almacenados en la tabla, seleccionar aquellos que se correspondan con algún criterio fijado por nosotros. Excel nos ofrece dos formas de filtrar una lista. - Utilizando el Filtro (autofiltro). - Utilizando filtros avanzados. Utilizar el Filtro. Para utilizar el Filtro nos servimos de las listas desplegables asociadas a las cabeceras de campos (podemos mostrar u ocultar el autofiltro en la pestaña Datos marcando o desmarcando el botón Filtro). Si pulsamos, por ejemplo, sobre la flecha del campo 1er Apellido, nos aparece un menú desplegable como este, donde nos ofrece una serie de opciones para realizar el filtro. Por ejemplo, si sólo marcamos Moreno, Excel filtrará todos los registros que tengan Moreno en el 1er apellido y las demás filas 'desaparecerán' de la lista. Otra opción, es usar los Filtros de texto, donde se despliegan una serie de opciones: En cualquier opción, accedemos a una ventana donde podemos elegir dos condiciones de filtro de texto, y exigir que se cumpla una condición o las dos. Excel evaluará la condición elegida con el texto que escribamos, y si se cumple, mostrará la fila. Usaremos el carácter ? para determinar que en esa posición habrá un carácter, sea cual sea, y el asterisco * para indicar que puede haber o no un grupo de caracteres. En el ejemplo de la imagen, solo se mostrarán los registros cuyo 1er Apellido tenga una o en el segundo carácter y no contenga la letra z. Para indicarnos que hay un filtro activo, la flecha de la lista desplegable cambia de icono. Para quitar el filtro, volvemos a desplegar la lista y elegimos la opción (Seleccionar Todo), reaparecerán todos los registros de la lista. También podemos quitar el filtro pulsando en Borrar filtro en la pestaña Datos. Utilizar Filtros avanzados. Si queremos filtrar los registros de la lista por una condición más compleja, utilizaremos el cuadro de diálogo Filtro avanzado. Previamente deberemos tener en la hoja de cálculo, unas filas donde indicaremos los criterios del filtrado. Para abrir el cuadro de diálogo Filtro avanzado, pulsaremos en filtrar. en la sección Ordenar y Rango de la lista: Aquí especificamos los registros de la lista a los que queremos aplicar el filtro. Rango de criterios: Aquí seleccionamos la fila donde se encuentran los criterios de filtrado (la zona de criterios). También podemos optar por guardar el resultado del filtrado en otro lugar, seleccionando la opción Copiar a otro lugar, en este caso rellenaremos el campo Copiar a: con el rango de celdas que recibirán el resultado del filtrado. Si marcamos la casilla Sólo registros únicos, las repeticiones de registros (filas con exactamente los mismos valores) desaparecerán. Para volver a visualizar todos los registros de la lista, acceder al menú Datos - Filtro - Mostrar todo. ORDENAR UNA LISTA EN EXCEL Revisaremos una manera avanzada de ordenar nuestras bases de datos en Excel, lo haremos sobre la versión Excel 2007. aunque para versiones Excel 2003 o anteriores es muy similar. Comenzamos con la disposición de nuestra Base de datos: Normalmente estamos acostumbrados a realizar la ordenación empleando los iconos directos de orden de A a Z o bien el contrario de Z a A, es decir en orden ascendente o descendente: Sin duda es la opción más cómoda y rápida, pero en ocasiones necesitamos realizar una ordenación sobre distintos campos de nuestra base de datos, dando prioridad a unos sobre el resto, para estas ocasiones es cuando empleamos el Ordenar avanzado: Esta ordenación nos permitirá aplicar una prioridad en nuestra Base de datos. Seleccionamos nuestro origen de datos en Excel, y desde el menú Datos > Ordenar En este cuadro diálogo configuraremos nuestros criterios de orden. En primer lugar es muy importante que marquemos la opción de Mis datos tienen encabezado, ya que de este modo no se incluirán los títulos de los campos en la ordenación; si no fuera el caso, habría que desmarcarlo. Ahora tan sólo deberemos ir seleccionando la prioridad de campos en la ordenación, seleccionando en la sección columna dicho campo. En la siguiente sección de la ventana de diálogo seleccionaremos la naturaleza de esta ordenación, es decir, si queremos ordenarlo siguiendo el valor de las celdas, el color de la fuente o del fondo de la celda (esta es una opción que sólo existe para la versión Excel 2007). Por último, para cada campo seleccionado, le indicaremos cuál es el criterio, ascendente o descendente o personalizado, por el que será ordenado el campo. Una vez configurados los tres elementos, podremos Agregar un nuevo nivel en la ordenación, esto es, darle una segunda prioridad para la ordenación total de la Base de datos. En nuestro ejemplo, supongamos que queremos tener ordenada nuestra base de datos, en primer lugar, en orden ascendente (de menor a mayor), siguiendo el valor de las celdas, por el campo 'Fecha operación'; como segundo nivel, ordenaremos dependiendo del valor de cada celda, de mayor a menor, por el campo 'Precio unitario'; y por último, utilizaremos el campo 'descuento' para ordenar los registros de nuestra base de datos de menor a mayor. Vemos el resultado de la ordenación: Lo que ha ocurrido en nuestra base de datos es que se han ordenado todos los registros, respetando la cabecera o títulos con los nombres de los campos, dando prioridad en primer lugar a las fechas de cada operación, si hubieran habido coincidencias en alguna fecha de varios registros, hubiera aplicado inmediatamente el segundo nivel de prioridad, es decir, el del campo 'Precio unitario', ordenando esos registros coincidentes por el campo 'Precio unitario' con una ordenación descendente; de igual forma, si nos encontráramos con coincidencias de registros también al aplicar este segundo nivel, aplicaría el tercer nivel definido.