jueves, 31 de julio de 2014

Listas Desplegables Simples o Dependientes

Fuentes: https://forum.openoffice.org/es/forum/viewtopic.php?f=21&t=3397
                     https://www.youtube.com/watch?v=BA5TmnPEpbk
                    http://www.flashforward-financiero.es/index.php/calc-open-office/trucos-y-consejos/29-listas-desplegables-dependientes



Dos opciones, usar un rango de celdas, ver en la siguiente imagen:
Insertar -> Nombres -> Definir

Para lo cual, le pondremos un nombre a nuestra selección. Para efectos de demostración le pondremos “países”, y una vez hecho esto vamos a cualquier hoja en donde necesitemos la lista por supuesto en el mismo documento, seleccionamos una celda y vamos al menú:

Datos -> Validez

Dentro de ésta opción de menú, nos aparecerá una pantalla en donde podemos elegir diferentes tipos de elección, entre los cuales, elegiremos “Intervalo de celdas” y nos aparecerá un cuadro de texto en donde debemos especificar el origen, entonces ahí ponemos el nombre de la lista que antes habíamos creado en este caso “países”  y con eso ya tendremos una lista de selección."

captura01.png


O, puedes usar datos introducidos directamente en la lista como en la siguiente imagen.
captura02.png


Una tercera posibilidad es que insertes un control cuadro combinado (ComboBox) como te muestro en la siguiente imagen, solo que este ya requiere un poco más de pasos, pero es mucho más versatil pues puedes vincularlo con bases de datos.





captura03.png 
 
 
Listas desplegables dependientes y la validación de datos en CALC de LibreOffice.
En esta nota mostrare cómo crear listas desplegables dependientes en Calc de Libre Office. Es un uso particular del módulo de “Validación de datos”. La validación de datos es útil, para tus propios hojas, y es esencial cuando compartimos las hojas de cálculo con otras personas.



Como seguramente habrás podido observar y sufrido, gran parte de los errores en las fórmulas, funciones o en los modelos, tiene su origen en la introducción, en la celda que sirve de operando, de un el valor o de una la naturaleza errónea para su objeto. Cuando ocurre, añoramos el que no tuvieses un filtro para evitar estos fallos, y que el ordenador no produjese alguna descarga correctora.
El comando de validación de datos de Calc te permite establecer ciertas reglas que dictan lo que puede ser introducido en una celda. Por ejemplo, puede que te interese  limitar la entrada de datos en una celda a que sean números enteros entre 10 y 18. Si el usuario hace una entrada inválida, Calc puede entonces mostrar un mensaje de aviso, con una ayuda o con las instrucciones.
Este comando está en el menú de Datos:

Este comando, da mucho juego, y hay muchas posibilidades, en esta nota sólo trataremos el uso de la validación de datos, para restringir las entradas a una lista de valores concretos y específicos que están introducidos en unas celdas, configurando una serie de listas. En estos casos debemos de utilizar la opción de Intervalo de celdas. Este comando supone una alternativa muy útil al uso de los controles de formularios, de las distas autodeplegables, y que no suponen ni macros ni programación para su uso.


Vemos el contexto de un caso en el que vamos a utilizar este procedimiento.
Supongamos que somos una agencia de guías de montaña, y organizamos excursiones en diferentes zonas del Pirineo. (el eterno binomio de zonas-vendedores, familias- productos, etc. Una clasificación de doble entrada). Y queremos que cada vez que elegimos una zona nos aparece una lista desplegable que mostrara solo y exclusivamente las excursiones de esa zona. Es decir una lista desplegable en función del valor fijado por otra lista desplegable (de aquí el nombre de la nota de hoy listas desplegables dependientes).
Las excursiones de las diferentes zonas de excursiones de nuestra empresa aparecen en esta hoja en rangos verticales. Las excursiones están en las celdas sombreadas con amarillo y que le he puesto el nombre de “Excursiones”.

Bueno, ¡pues vamos a ello¡
Paso 1: Empezamos creando nombres de rangos. El primero será “Zonas”, y que agrupara las zonas de excursiones,  celdas B16:I16, un rango en horizontal. Después crearemos unos nombres de rangos que coincidan con los nombre de las zonas. Es importante que se llamen igual. El rango solo hará referencia a la primera celda de excursiones. Hay dos opciones, o creamos un nombre que se asigne a un grupo de celdas fijas, o lo hacemos de forma dinámica, y permitimos que la lista de excursiones pueda ser ampliada o modificada. Esta segunda opción es la que vamos a explicar.
Para dar los nombres utilizaremos la opción de Nombres\Crear… del menú de “Insertar”. Señalamos las celdas que constituyen las dos primeras filas de la tabla de datos, las zonas y la primera excursión, el nombre del rango y la celda a la que hará referencia.



De esta forma el rango AISA= $B$17, SALAZAR=$C$17,  etc.
Paso 2: Creamos la celda de introducción del datos de ZONA.  Nos posicionamos en la celda C7, y la combinamos con la celda D7, y le datos el nombre de “mizona”, para que de esta forma podamos trasladar estas celdas a cualquier sitio de la hoja, y que todas las fórmulas que vayamos utilizando necesiten de este origen haga referencia al nombre.
Seguidamente, y estando en la celda C7, daremos las instrucciones de validación de datos, eligiendo “Datos\Validez…”, eligiendo “Intervalo de celdas”, y en Origen marcando el rango “Zonas”.

Ya tenemos la primera lista desplegable.  Ahora nos queda que Calc nos muestre una lista desplegable que dependa de la zona elegida.
Paso 3: Nos posicionamos en la celda C8, la combinamos con las celdas C8:E8, para que quepa todo el nombre.  Para que la lista cambie en función de la zona elegida, crearemos un rango dinámico, que cambie con “mizona”, le llamaremos “miexcursio”, y hará referencia a esta fórmula:
=  DESREF(INDIRECTO(mizona);0;0; CONTARA(DESREF(INDIRECTO(mizona);0;0;FILAS(Excursiones);1));1)
Repetimos los mismos pasos para crear la validación pero ahora en “Origen” pondremos el nombre de “miexcursio”. Y ya debería funcionar.


Algunas aclaraciones:
  1. El uso de los nombres de los rangos, no es un capricho o por hacerme el virtuoso. Nos permite, trasladar la tabla de datos, de zonas y excursiones a otras hojas del libro, sino la validación exige que este en la misma hoja o que haga referencia al nombre de la hoja que contenga la lista de valores.
  2. las tripas de la fórmula de “miexcursio”: =  DESREF(INDIRECTO(mizona);0;0; CONTARA(DESREF(INDIRECTO(mizona);0;0;FILAS(Excursiones);1));1)
a)  Utilizamos una combinación de las funciones DESREF, INDIRECTO, CONTARA y FILAS.
b)  Con DESREF encapsulamos un grupo de celdas que comenzaran en la celda que marque la zona elegida, por eso le hemos puesto un nombre, y esa dirección se sabrá gracias a la función INDIRECTO, que nos dará una referencia absoluta, y el vértice inicial de la matriz de celdas a encapsular.
c)  Para determinar el número de celdas que conformará esa lista utilizamos la función CONTARA, para que cuente valores alfanuméricos,  que hay en las celdas consecutivas hacia debajo de esa zona. Volvemos a utilizar la función DESREF, y le marcamos un nuevo encapsulado de celdas, formado por la primera excursión de la zona y el número de FILAS que contiene el rango “Excursiones”.
Este modelo tiene una limitación y es que si necesitamos de mas excursiones para una zona que las que posibilita el rango “Excursiones”, tenemos que ampliar este rango, bien entrando en el menú de “Nombres”, o insertando celdas hacia abajo, seleccionando tos las celdas de la última fila del rango “Excursiones”, y que están señalado por las celdas con el signo “*”.