sábado, 4 de abril de 2009

Listas desplegables dependientes

En muchas ocasiones podemos necesitar generar listas desplegables, por medio de la herramienta de validación de datos, dependientes entre si, es decir, que en función de lo que seleccione en la primera lista se me habiliten unas u otras opciones en la segunda lista. Como siempre la solución es bastante sencilla. Supongamos que tenemos tres productos, a saber, Coca-Cola, Fanta y Powerade y que cada uno de ellos tiene las opciones que se muestran en la tabla:

Necesitamos que cuando seleccionemos el producto deseado en la celda C3 en C6 aparezcan los subproductos correspondientes al producto seleccionado. Para ello hacemos lo siguiente:
1. Seleccionamos el rango B12:B15 y vamos al menú Insertar/Nombre/Crear. Por defecto nos pregunta si los nombres están en la fila superior de la selección y, como así es, aceptamos.
2. Seleccionamos el rango B17:D21 y vamos al menú Insertar/Nombre/Crear. Por defecto nos pregunta si los nombres están en la fila superior y en la columna izquierda, ya que en esta ocasión se encuentra con texto en ambas zonas. Dejamos marcada sólo la opción de Fila Superior, que es donde se encuentran los nombres que utilizaremos.
3. Nos situamos en la celda C3 y vamos al menú Datos/Validación de datos. Le indicamos permitir Lista y en Origen escribimos =Producto (que es el nombre del rango que tiene los productos que compondrán nuestra lista). Aceptamos.
4. Nos situamos en la celda C6 y vamos al menú Datos/Validación de datos. Le indicamos permitir Lista y en Origen escribimos =INDIRECTO(C3) y aceptamos. De esta manera convertimos el nombre del producto seleccionado en C3 en el rango que debe mostrar en C6, ya que los nombres de los rangos de los subproductos coinciden con los nombres de los productos. INDIRECTO convierte esta relación y nos muestra la lista correcta en C6.

42 comentarios:

  1. Hola buenos días, una pregunta, en tu ejemplo como puedo hacer para mostrar 2 listas dependientes en lugar de una?
    Gracias,
    Mari.

    ResponderEliminar
  2. ¿Te refieres a una lista dependiente de una primera y otra lista dependiente de esta segunda?

    ResponderEliminar
  3. Hola buenos días, no, me refiero a que dos listas se muestren al mismo tiempo al seleccionar un valor de otra lista desplegable. Sin embargo ya un compañero me dio una solución y estoy por ponerla en practica que es crear los nombres de las listas al aplicar la función INDIRECTO.
    Muchisimas gracias por tu pronta respuesta.

    ResponderEliminar
  4. hola buenos días. Tengo una duda que creo que está relacionada y no encuentro solución,a ver si se te ocurre como puedo hacerlo.
    Mira, trabajo en una empresa de servicios y para elaborar presupuestos estoy haciendo un excel que relacione metros cuadrados de un local, y tipo de tratamiento que se le va a hacer. Esto es una tabla y da unos valores en € relacionando estos dos parámetros.
    Quiero darle este excel al comercial para que tenga la referencia. Ahora, el formato en que quiero que esté es en varios desplegables de manera que en la columna 1 esten los m cuadrados del local en un desplegable. En la columna 2 tenga otro desplegable con el tipo de tratamiento y quiero que en la columna 3 le aparezca el precio al elegir los valores de la columna 1 y 2. Cómo hago esto? Se trataría de relacionar valores de la columna 1 y 2 y que aparezca en 3 la intersección pero no se como hacerlo.

    ResponderEliminar
  5. Hola. Si no entiendo mal la cuestión creo que es lo mismo (aunque con otro ejemplo) que planteo en el post de fecha abril 2009 "Búsqueda basada en varias columnas a la vez". Si ese no es el caso por favor mándame un archivo de excel con el ejemplo de lo que quieres a kiko.rial@ie.edu. Un saludo

    ResponderEliminar
  6. SOY DE VZLA EXCELENTE HE ACLARADO MI DUDA GRACIAS

    ResponderEliminar
  7. HOLA, NO SE PORQUE CUANDO ENSAYO ESTO Y PONGO EN EL ORIGEN DE LA CELDA C3= PRODUCOS ME DICE QUE NO ES POSIBLE QUE HAY UN ERROR Y DE AHI NO PEUDO CONTINUAR, MUCHAS GRACIAS

    ResponderEliminar
    Respuestas
    1. El nombre del rango es PRODUCTOS y debemos escribirlo (precedido de un =) dentro de la herramienta Validación de datos. No debería dar ningún error. Si persiste el error por favor mándame el fichero y lo reviso. Gracias

      Eliminar
  8. Hola Señor Rial, muchas gracias por la explicación. Avanzando un poco más en el tema, tengo la misma duda que el primer anónimo, pero dado de que no ha compartido el resultado, estoy sin saber aún cómo hacerlo. Le doy un repaso a mi pregunta. Se trata de que tengo una lista desplegable con tipos de material de tuberías. Luego una lista con el coeficiente de rugosidad de Manning según el tipo de tuería, y a parte tengo que hacer otra lista desplegable con los diámetros nominales según el tipo de tubería. En resumen, tengo dos listas desplegables dependientes de una misma lista. He buscado y rebuscado por numerosos foros, y solamente a parte de este, he encotrado a otra persona con la misma duda, pero que también como el anónimo presente, lo había solucionado pero no lo compartió. Espero que haya sido claro con la cuestión. Muchas gracias.

    ResponderEliminar
    Respuestas
    1. Este comentario ha sido eliminado por el autor.

      Eliminar
    2. Si me proporcionas tu mail te hago llegar la solución. Un saludo

      Eliminar
  9. Hola Kiko, tengo una duda, cómo puede hacerse para arrastrar la fórmula del Indirecto, es decir, tengo el resultado en la celda B1 que es la relación de lo que pongo en la A1, pero necesito que se aplique el mismo resultado relacionando la A2 con la B2, A3 con B3 etc, pero no encuentro la forma de arrastrar el indirecto, me aparece error :(. Gracias!

    ResponderEliminar
    Respuestas
    1. Hola. Por favor envíame a mi mail kiko.rial@gmail.com un archivo con lo que quieres solucionar. Gracias

      Eliminar
  10. hola¡¡

    TU aporte es sensacional, pero me surge un inconveniente, en la primer fila selecciono y condiciono las celdas de manera exitosa, es decir, la celda C3 depende de la C2, la C4 de la C3 y asi sucesivamente. la situacion es que al querer copiar ese mismo formato o instruccion a las demas filas de la 4 en adelante, todas dependen del resultado de la fila 3.....

    Ayudame por favor¡¡ te lo agradezco de antemano.

    ResponderEliminar
  11. Hola Hugo. Necesito más detalle de lo que quieres conseguir, para poder ayudarte.

    ResponderEliminar
  12. Hola Nuevamente.

    Mas que nada es copiar las condiciones de mi primer fila a la siguiente, sin que esto provoque que todas dependan de la primer fila.

    Lo que hice con éxito fue en la celda F2 poner el primer rango, la celda G2 depende de la selección de la F2, la celda H2 depende de la selección de la G2 y por ultimo la celda I2 depende de la selección de la celda H2. Hasta aqui esta todo perfecto y funciona de maravilla siguiendo al pie de la letra tu aporte.

    El problema es que no puedo copiar lo mismo para cada fila, es decir, que la celda G3 dependa de la F3 y asi sucesivamente, ya que si copio el formato todas las filas G posteriores siempre dependen del resultado de F2 y asi.

    Como puedo copiar dicho formato sin tener que hacerlo uno por uno, ya que tengo una base que se va llenando dia con dia aproximadamente 200 registros y es muy complicado hacerlo uno por uno.

    Gracias¡¡

    ResponderEliminar
    Respuestas
    1. Hola Hugo. Entiendo que lo que estás haciendo es copiar la celda hacia abajo y no copiando sólo el formato. Si es así por favor mándame tu hoja (o un ejemplo similar) a kiko.rial@gmail indicándome lo que quieres conseguir e intento solucionarte el problema.

      Eliminar
    2. Ya te he mandado la solución y explicación a tu mail. Un saludo

      Eliminar
  13. Hola, tengo exactamente el mismo problema que Hugo Alfaro, podrías publicar la solución?
    Muchas gracias por tu blog.

    ResponderEliminar
    Respuestas
    1. Si tienes el mismo problema que Hugo es porque en las listas dependientes en las que utilizas la función INDIRECTO dentro de los paréntesis tienes dólares en la referencia a la celda. Si quitas los dólares problema resuelto. Si quieres puedes mandarme tu caso a kiko.rial@gmail.com e intento ayudarte.

      Eliminar
  14. pregunta, tengo excel 2010, no tengo la opcion de Insertar/Nombre/Crear, esta en alguna herramienta en especial?

    ResponderEliminar
    Respuestas
    1. En la ficha Fórmulas tienes el grupo Nombres Definidos. Dentro de este grupo tienes las diversas opciones para crear nombres.

      Eliminar
    2. Gracias kiko por la pronta respuesta, me recorri todas las barras de herramientas, menos claro, esa! jajjaja :P

      Eliminar
  15. Hola, tengo el mismo problema de varios de los usuarios: quiero copiar una lista desplegable dependiente en las filas siguientes. es decir de la K1 y L1 a las K2 y L2, K3 y L3, K4 y L4, y así sucesivamente hasta la última fila, pero me da error y solo depeden de los datos que pongo en la K1. es decir si estoy en la L2, por ejemplo, solo me deja escoger lo que dependa de la K1 y no de la L1 como quiero. Gracias por tu aporte y por la respuesta que me des a esta inquietud. Gracias.

    ResponderEliminar
  16. Si lo que quieres es generar listas desplegables en la columna K y en función de lo que elijas en K2 que tengas una lista determinada en L2 y si eliges otra opción en K3 (distinta de la de K2) que te aparezca otra lista distinta en L3, lo que debes hacer es:
    1. Escribir en horizontal los componentes de la lista de la columna K.
    2. Debajo de cada componente escribir los "subcomponentes".
    3. Crear nombre para cada rango de subcomponentes con los rótulos de la primera fila.
    4. En L2 ir a validación de datos/Permitir lista y escribir la fórmula: =INDIRECTO(K2) y copiarla hacia abajo en el rango L.
    Si no lo consigues por favor mándame un mail a kiko.rial@gmail.com y te mando la solución.

    ResponderEliminar
  17. Buenas tardes Kiko, lo primero gracias por tus aportes.
    Mi cuestión es como poder hacer que dos listas desplegables dependan de una misma lista desplegable, te podría pasar una impresión de pantalla y a ver si me puedes orientar al respecto, muchas gracias de antemano.

    ResponderEliminar
  18. Kiko, encontré su post y me pareció genial. Gracias por tomarse el tiempo y publicar este tipo de soluciones. Lo único con esta solución de las dos listas desplegable es que en la primera debes colocar el nombre pegado con el underscore (_) y no separado.

    ResponderEliminar
  19. Hola, agradecerte los post me sirven de gran ayuda. Tengo un problema y las listas dependiente la funcion indirecto, lo hago pero na mas veo los datos del principio y del final no veo los intermedio de la lista dependiente sabe porque puede ser?
    Gracias.

    ResponderEliminar
    Respuestas
    1. No entiendo el problema. Puedes mandarme el archivo a kiko.rial@gmail.com?

      Eliminar
  20. Hola Kiko, tengo un problema: en un archivo dónde tengo la 1er lista es de las provincias de Arg "provincias", luego tengo las listas localidades correspondientes a cada provincia. Cuando genero el indirecto me dice que hay un error y me pregunta si quiero continuar yo elijo continuar. ("el origen actualmente evalúa un error")
    Ahora cuando selecciono cualquier provincia que no sea las 3 primeras me funciona bien, no así con las 3 primeras.
    No sé cual es el problema. Me gustaría que me ayudes. Gracias

    ResponderEliminar
    Respuestas
    1. Por favor mándame el archivo (o un "trozo") a kiko.rial@gmail.com e intento ayudarte. Un saludo

      Eliminar
  21. Hola Kiko, gusto en saludarte. Tengo la siguiente situación, a ver si puedes ayudarme. Siguiendo la nomenclatura de tu ejemplo, en lugar de tres "Productos" (que en mi caso son Clientes), tengo unos 250. Es decir, que con éste método tendría que crear unos 250 nombres.. lo cual no es viable. Además, el número de clientes crece día a día. ¿Podrías ayudarme? Gracias!

    ResponderEliminar
    Respuestas
    1. Con este método generas los 250 nombres de una sola vez. Añadir nuevos nombre es también muy rápido y sencillo. El único problema, evidentemente, es que tendrás listas desplegables con 250 elementos o más. Salvo que puedas generar grupos de clientes y hacer listas desplegables previas (a los clientes) no veo que otra solución alternativa se podría plantear.

      Eliminar
  22. Hola Kiko, excelente post, tengo un problema que he visto en varios usuarios, necesito una lista desplegable con los municipios de mi departamento, una vez me muestre estos deseo ver los colegios del municipio, y luego las sedes que pertenecen a cada colegio, existe solucion con excel?

    ResponderEliminar
  23. La solución es la misma. En tu caso tendrás que crear primero listas de cada departamento con sus correspondientes municipios y aplicar la misma formulación que en este ejemplo. Una vez hecho esto, debes crear nuevas listas con los nombres de los municipios con sus correspondientes sedes. La fórmula será la misma pero referida esta vez a la celda en la que aparezca el municipio en cuestión.

    ResponderEliminar
  24. Hola Kiko! Estoy trabajando con listas dependientes pero tengo un gran problema, por ejemplo tengo una lista dependiente en la celda C10 la cual es dependiente de la celda C9, pero ahora en la celda J9 tambien deseo una lista dependiente pero que dependa de la misma C9. Es posible realizar dos listas dependientes diferentes de la misma celda? Gracias!

    ResponderEliminar
    Respuestas
    1. Sí. Es posible crear dos o más listas dependientes de una sola celda. Simplemente realiza la primera y cópiala en J9. Un saludo

      Eliminar
  25. Muy Bueno! Muchas gracias por toda la info!

    ResponderEliminar