Campo desplegable que cumpla condición

A ver si me podéis ayudar porque me he embuclado, no consigo lo que quiero.

Tengo un libro con dos hojas. Una hoja 'Datos' en la que se van añadiendo datos de alumnos. Al final hay una columna con una lista desplegable con dos posibles valores, Sí o No. Hasta aquí ningún misterio.

Tengo una segunda hoja 'Selección' donde quiero que en el campo 'Selección' se me muestre una lista desplegable pero mostrando únicamente los nombres de los alumnos que en la otra hoja están seleccionados, es decir, con un Sí en la sexta columna.

Por último, que los campos Nombre, Apellido y Centro se rellenen con los datos que corresponden al alumno seleccionado en el desplegable.

Ejemplo: Despliego la lista y se muestran los alumnos que tienen Sí en la hoja Datos: Pepe, Carlos, Gonza y Luis. Al seleccionar Gonza los tres campos se informarían con Gonza, Pulido y Colegio. Según vaya cambiando el valor del desplegable me deberían de cambiar los valores de los tres campos.

En la hoja Datos, si cambio el valor de la sexta columna de un registro a No, ya no debería mostrarse en el desplegable.

Espero haberme explicado de manera que se pueda entender. Muchas gracias a los expertos por adelantado, me quitaríais un peso de encima si me ayudáis.

Respuesta
1

.14/09/16

Hola,

Habia empezado a ensayar alguna solución en Visual Basic que extrajera en otro rango la selección que hiciste en el formulario.

Pero me dí cuenta de que eso lo hace MS Excel - y lejos más eficientemente que una macro- a través de sus Tablas Dinámicas.

Así que me tome el tiempo para reproducir tu ejemplo y le agregué una de esas tablas quedando algo como esto:

Al efecto de mandarte esta imagen, coloqué la tabla al pie, pero mientras la construyes puedes indicarle que la muestra en otra hoja.

Si te interesara como solución a tu necesidad, aquí te explico cómo se crea:

Una tabla dinámica es una herramienta de MS Excel para obtener un reporte agrupado de distintas maneras basado en datos incluidos en una tabla o base de datos.

Es dinámica porque, una vez armada, permite agregar, mover, o eliminar campos en ella hasta lograr el reporte deseado.

Para armarla, sigue los siguientes pasos:

1.– Es necesario que cada columna tenga un título único, aún aquellas que estuvieran vacías.

Selecciona tu lista desde esta primera fila (títulos) hasta el último registro en ella. Continúa resaltando este rango para que futuros registros (por si se agregaran) se incluyan en la Tabla dinámica.

Manténla seleccionada.

2.- Pulsa el botón en "insertar" encontrado en la barra del menú principal y selecciona "Tabla dinámica".

3.- Una ventana pide seleccionar la fuente de los datos. Marca "Lista o base de datos de MS Excel".

4.- Si hubieras dejado tu rango seleccionado, se asumirá ésta como la base de datos fuente. En caso contrario, puedes seleccionar el área en este paso.

Allí también le indicas dónde quieres ubicarla.

5.- Verás que donde te dejó el Diseño en blanco

Y se mostrarán los títulos de las columnas disponibles. Verás, por ejemplo, en tu caso:

6.- El próximo paso depende de ti, porque esto es muy "personalizable". Sólo tienes que arrastrar etiquetas al área donde quieres que ellas sean mostradas.

Por ejemplo:

- Arrastra la etiqueta "Seleccionado" al área de Filtros.

Con esto hasta te ahorras el formulario porque allí te deja disponibles todas las opciones de selección

- Arrastra las etiquetas "nombre", "apellido" y "centro" al área de FILAS.
Con botón derecho del mouse sobre ellas, podrás quitarles los subtotales que suele colocar.

- Opcionalmente, podrías arrastrar la etiqueta "APELLIDO" al área de los VALORES

Esto es para que los cuente.

(Nota: otras funciones posibles sobre campos numéricos son:

Contar

Promedio

Min

Max

Producto

Contar Números

Desvest

Desvestp

Var

Varp)

Así conseguirás una tabla donde podrás mostrar sólo los casos seleccionados.

Verás en la parte superior de la primera imagen un botón que dice "Diseño del informe", que sirve para modificar el formato de tu tabla. Como viene con autoformato, yo suelo cambiar a Formato Tabular, pero puedes dejarlo como mejor te luzca.

Aparte de lograr lo que querías, contar con una tabla dinámica sobre una base sólida, te permite hacer un sinnumero de análisis y reportes, simplemente moviendo los campos disponibles a las areas de construcción.

Una ventaja adicional es que no es necesario repetir este procedimiento cada vez que cambien, se agreguen o quiten, datos de la base.

Bastará actualizar la tabla dinámica, con botón derecho del mouse sobre ella y eligiendo la opción "Actualizar datos"

Bien, más largo de explicar que de hacer, pero creo que vale la pena.

Espero que te haya ayudado.

Saludos

Fernando

(Buenos Aires, Argentina)

Muchímas gracias, Fernando.

Voy a probar lo que me dices.

La verdad, preferiría hacerlo con funciones del tipo BUSCAR, DESREF, INDIRECTO... porque luego esos campos los tengo que reutilizar para cargarlos en otras celdas y hojas... y usando filtros como me sugieres creo que me sirve para visualizar pero no para reutilizar posteriormente en otras hojas...

Gracias de nuevo.

Alf.

.

Buenas, Alf.

Sólo aclarar que no estoy hablando de Filtros -que trabajan sobre la misma base- sino de una (o varias) tablas dinámicas que puedes colocar en otra hoja y utilizar luego en otras hojas.

Aún con la complejidad de resolverlo con fórmulas (y no creo que esas que mencionas lo resuelvan), tendrías que colocarlas en un cuadro en otra hoja, con lo cual estarías en la misma situación que con la tabla que te propongo.

Pero, prueba mis propuesta y dime si aún así no es lo que necesitas.

Abrazo

Fernando

.

OK, gracias, Fernando.

voy a probar alguna posible solución con lo que me propones.

En cuanto pueda comentaré el resultado, mientras no voy a cerrar la pregunta por si a alguien se le ocurre otra solución en base a funciones.

Un abrazo desde España.

.

Perfecto!

Ese es uno de los atractivos de MS Excel: la variedad de soluciones para un mismo problema.

Ojalá encuentres la más eficiente.

Abrazo

Fer

1 respuesta más de otro experto

Respuesta
1

He encontrado una solución que se ajusta un poco más a lo que solicitas.

Eso sí, necesitas una columna extra a la izquierda de tus datos, una columna con una serie numérica, para numerar tus alumnos tal y como aparece en la siguiente imagen:

Comentas que la tabla está "viva", que se van a ir añadiendo registros. En este caso te recomiendo que alargues la serie hasta una fila que sepas que en toda la vida del fichero no vas a llegar. Luego si te ofende a la vista, la puedes ocultar.

A continuación y donde quieras del libro, en una columna creas una serie (1, 2, 3, 4, etc) de tantos elementos como máximo de alumnos quieres que te aparezcan en el desplegable.

Siguiente paso, en la celda de la derecha del "1" que acabas de escribir, formulas así:

Nota que he creado mi serie de 10 elementos en el rango I2:I11 y he formulado en J2. En mi desplegable solamente aparecerán como mucho los 10 primeros alumnos "Seleccionados".

Nota que los rangos que utilizo en la fórmula solamente recogen datos de la tabla tal y como está, sin tener en cuenta que en el futuro se pueden anexar más alumnos como comentas; entonces cuando la escribas, adapta los rangos del mismo modo que comentaba antes; hasta una fila que sepas que no vas a llegar en años de uso del archivo.

La fórmula utilizada es de matriz; para que funcione, la escribes y en lugar de pulsar "Enter", tienes que pulsar "Control" + "Mayúsculas" + "Enter".

Siguiente paso arrastrar la fórmula, en el ejemplo hasta "J11".

La combinación de la serie y la fórmula crea el listado de los alumnos "seleccionados".

Para hacer el desplegable, seleccionamos la celda, hacemos click en menú "Datos\Validación de datos", escogemos la opción "Lista" y en "Origen" debemos formular esto:

=DESREF(Datos!$J$2;0;0;CONTARA(Datos!$J$2:$J$11)-CONTAR.BLANCO(Datos!$J$2:$J$11))

Deberás modificar la fórmula para adaptarla al rango en el que tengas el listado de alumnos "seleccionados" que hemos elaborado antes.

De este modo la lista se adaptará al número de alumnos seleccionados automáticamente.

Finalmente para rellenar los demás datos lo puedes hacer directamente con un buscarv sobre el valor seleccionado:

Si puedes añadir la columna a la izquierda de tus datos, lo deberías poder resolver como he descrito.

¡Gracias! 

Víctor, qué grande¡ con esto me vale de sobra¡ 

muchísimas gracias una vez más, por tu interés y esfuerzo.

Un abrazo.

Alf.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas