Saltar al contenido

Lista desplegable donde no se puede seleccionar un dato elegido con anterioridad.

publicado

Buenas!!

Tras crear una lista desplegable, es posible que no puedas volver a escoger uno de los elementos de la lista si ya fue escogido en otra celda???

En mi caso sería en una factura, que selecciono el producto y en la siguiente celda me sigue saliendo el mismo producto para poder elegirlo, y no quiero.

Gracias de antemano! ^^

Featured Replies

publicado

Hola JJMD88

Revisa el adjunto. En la hoja 2 tiene las listas empleadas para la validación. La columna Validación está introducida matricialmente con Control+Mayúsculas+Intro en vez de sólo Intro.

Un saludo desde Vitoria

ValidacionExcluyente_io_130410.zip

publicado
  • Autor

Gracias!!

Te importaría explicarme un poco el código de la columna validación??

publicado

Hola JJMD88

La función es la siguiente

=SI(ESTEXTO(INDICE(lista;K.ESIMO.MENOR(SI(selec=0;COINCIDIR(lista;lista;0);"");FILA(INDIRECTO("1:"&FILAS(selec))))));INDICE(lista;K.ESIMO.MENOR(SI(selec=0;COINCIDIR(lista;lista;0);"");FILA(INDIRECTO("1:"&FILAS(selec)))));"")

El condicional SI sólo está para que cuando en la lista no haya texto devuelva un blanco, es decir SI(ESTEXTO(función);función;nada), realmente lo que nos trae los datos en fucnión de la columna auxiliar (la B) es lo que llamo función para abreviar, es decir

INDICE(lista;K.ESIMO.MENOR(SI(selec=0;COINCIDIR(lista;lista;0);"");FILA(INDIRECTO("1:"&FILAS(selec)))))

lista y selec son dos nombres que he usado para definir dos rangos, el de la lista original y el de la auxiliar. Están definidos con la función DESREF, de forma que si añades datos no hace falta cambiar el rango, se hace automáticamente. (Lo que si haría falta es ampliar el rango de la función matricial. Si la lista va ase rfija puedes fijar el rango directamente por seleción del mismo y olvidarte de DESREF.

El resto lo hace la función INDICE aplicada al rango "lista", con K.ESIMO.MENOR(SI(selec=0;COINCIDIR(lista;lista;0);"");FILA(INDIRECTO("1:"&FILAS(selec)))) obtenemos un número en función de si el rango "selec" es igual a 0 (entonces devuelve un número) o no (en este caso queda en blanco). FILA(INDIRECTO("1:"&FILAS(selec))) nos proporciona el contador para K.ESIMO.MENOR

Un saludo desde Vitoria

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.