domingo, 21 de noviembre de 2010

Búsqueda con Columna Variable (3 soluciones)


"Tengo una tabla con información de empleados y me gustaría tener como variable una celda donde indicarle la información requerida para que me devuelva la información existente en la intersección entre el empleado que aparece en la primera columna de la tabla y una columna variable".

Aunque una posible solución ya la tenéis en el post "Búsqueda con Tablas e Indicador de Columna variable", y dado que me han llegado varias consultas muy similares, vamos a ampliar dicho artículo planteando tres soluciones distintas con las siguientes funciones: doble BUSCARV, BUSCARV e INDIRECTO y, finalmente, INDICE y COINCIDIR. Partimos del siguiente ejemplo:


Planteamos la siguiente entrada de datos:


En la celda C2 seleccionaremos el empleado del que queremos la información y en la celda C3 la información concreta que necesitamos. Empezamos creando con la herramienta de Validación de Datos las listas de entrada de datos. Para ello nos situamos en la celda C2 y vamos a l menú Datos/Validación y lo formulamos como se muestra en la imagen:


Pulsamos Aceptar y ya tendremos nuestra lista desplegable en C2. Para hacer lo mismo en C3 debemos dar algún paso intermedio. El motivo es que el contenido de la lista de C3 serán los rótulos de los campos de la tabla. Dicho rótulos se encuentran en disposición horizontal y la herramienta de validación no nos permite que el origen de la lista tenga dicha disposición. Lo único que tenemos que hacer es seleccionar el rango B10:F10 y pulsar Copiar. A continuación nos situamos en la celda H3 y vamos a Edición/Pegado Especial y seleccionamos Transponer, y pulsamos Aceptar. En la columna I añadimos la numeración que se muestra en la imagen y que después veremos su uso:


Ahora sí podemos situarnos en C3 y proceder a genera la lista desplegable (Datos/Validación):



1. Solución con Doble BUSCARV
Seleccionamos el rango B11:F20 y vamos al cuadro de nombres (a la izquierda de la barra de fórmulas). Hacemos un clic y escribimos el nombre Datos y pulsamos Enter. A continuación hacemos lo mismo con el rango H3:I7 y le damos el nombre, por ejemplo, ncol. Esta tabla no es otra cosa que el nombre de los distintos campos de la tabla y el número de columna que representa dentro de dicha tabla (que hemos denominado Datos). Nos situamos en la celda B5 y escribimos la siguiente fórmula:

=BUSCARV(C2;datos;BUSCARV(C3;ncol;2;FALSO);FALSO)

Lo que estamos haciendo es anidar un BUSCARV en el argumento número de columna de dicha función. Como se puede ver en la siguiente imagen, seleccionamos en C2 el empleado que queremos consultar (empleado7) y después en C3 seleccionamos de la lista la información que necesitamos:



2. Solución con BUSCARV e INDIRECTO
Podemos obtener el mismo resultado anidando la función INDIRECTO en el argumento número de columna de la función BUSCARV. Para ello seleccionamos el rango H3:I7 y vamos al menú Insertar/Nombre/Crear. Aparecerá la ventana que se muestra en la siguiente imagen y en donde debemos seleccionar (ya aparece seleccionada por defecto) la opción columna izquierda:


Pulsamos Aceptar. A partir de este momento en el cuadro de nombres aparecerán todos los nombres de los rótulos de la tabla de datos. Al pulsar cualquiera de estos nombres nos llevará al número de columna que representan. Y esto es lo que precisamente nos ayudará con la función INDIRECTO. Nos situamos en la celda D5 y escribimos la siguiente fórmula:

=BUSCARV(C2;datos;INDIRECTO(C3);FALSO)



3. Solución con INDICE y COINCIDIR
La función INDICE nos devuelve la intersección de una fila y columna de una matriz. Nuestra matriz es la tabla que hemos denominado Datos. El número de fila que queremos dependerá del empleado que seleccionemos en C2. Para calcular a qué fila se refiere introducimos la función COINCIDIR. El número de columna dependerá de la información solicitada en C3. Utilizamos también la función COINCIDIR para obtener el número de columna. La fórmula que debemos escribir en F5 es:

=INDICE(datos;COINCIDIR(C2;B11:B20;0);COINCIDIR(C3;B10:F10;0))


2 comentarios:

  1. EXPLENDIDO TUTORIAL, TE ESTARIA MUY AGRADECIDA SI ME DIJERAS PORQUE EN EL PRIMER EJERCICIO EL DE DOBLE BUSCARV ENUMERAS LOS DISTINTOS CAMPOS Y LUEGO EN EL 2º BUSCARV LA COLUMNA A BUSCAR ES LA DEL SUELDO QUE TIENE EL Nº 3 Y SIN EMBARGO PONES SIEMPRE LA 2, SEA EL CAMPO QUE SEA, DE NO PONER LA 2 DA ERROR, ¿PORQUE? MUCHAS GRACIAS Y QUE TENGAS UN BUEN AÑO. UNA PAISANA DE LUGO

    ResponderEliminar
    Respuestas
    1. Muchas gracias Juana. En el 2º BUSCARV estamos trabajando sobre la tabla denominada ncol, que tiene 2 columnas. La primera es el rótulo de la información que buscamos y la segunda el número de columna de la tabla Datos que nos interesa. Por eso pongo un 2 porque en la tabla ncol siempre buscaremos el número que aparece en la segunda columna y que, posteriormente, se aplicará, dicho número, al primer BUSCARV que ya trabaja con la tabla Datos. Espero haberme explicado :-)

      Eliminar