LibreOffice Calc: Validación de Datos

Una nueva lección sobre el manejo de Libre Office Calc a cargo de José Francisco Martínez Jiménez, del Servicio de Gestión Contable de la Intervención General de la Junta de Andalucía, perteneciente a la Consejería de Hacienda, Industria y Energía

Hay situaciones en que, para minimizar el número de posibles errores que podamos cometer al teclear un valor en una celda, nos interese definir aquellos valores que son válidos o que consideramos correctos para una celda, teniendo en nuestras manos la posibilidad de admitirlos o rechazarlos de acuerdo con nuestras necesidades.

En LibreOffice Calc encontramos esa opción en el menú Datos > Validez… (imagen de la derecha)

Cuando accedemos se nos muestra un cuadro de diálogo con tres pestañas: “Criterios” , “Ayuda de entrada” y “Aviso de error” (ver imágenes abajo).

El botón “Restablecer” reinicializa las modificaciones realizadas en la pestaña actual a aquellas existentes cuando se abrió el cuadro de diálogo mientras que el botón “Cancelar” cierra “Validez” sin efectuar ninguna modificación. El botón “Ayuda” nos mostrará más información de la pestaña en la que nos encontremos. Veamos ahora con detenimiento cada una de estas tres pestañas.

PESTAÑA  “CRITERIOS”

En esta pestaña tenemos que especificar la regla de validación de la celda previamente seleccionada de entre las permitidas. Estas reglas son: Todos los valores, Números enteros, Decimal,  Fecha, Hora, Intervalo de celdas, Lista, Longitud del texto y  Personalizado.

Todos los valores

En este caso no hay regla de validación y, por tanto, se admite cualquier valor. En la práctica es como si no hubiésemos seleccionado Datos > Validez…

Número enteros

Debemos recordar que los números enteros son aquellos que no tienen parte decimal.

Las comparaciones igual, menor que, mayor que, etc., se explican por sí solas. Ahora bien, hay que tener cuidado con algunos matices del lenguaje “humano” al traducirlo al lenguaje “matemático”, por ejemplo: Prestación para personas mayores de 18 años.  Si indicamos “mayor que” entonces los valores válidos son de 19 en adelante. En este caso deberíamos indicar “mayor que o igual a” si queremos que el valor 18 también sea válido.

Decimal

Los números decimales se corresponden con los números reales, es decir, números que tienen parte decimal. Tiene las mismas condiciones de comparación que los números enteros.

Fecha/Hora

Las comparaciones se realizan con fechas y horas respectivamente y sólo serán válidas aquellas que cumplan con la condición establecida. Ambas tienen las mismas condiciones de comparación que los números enteros y decimales. ¿Por qué? Porque internamente para Calc las fechas y horas son números. La fecha es la parte entera del número y la hora es la parte decimal. Ejemplos:

  • 30 de diciembre de 1899: Es el número 0 (día cero).

  • 1 de junio de 2020: Es el número 43.983.

  • Las 12 del mediodía: Es el número 0,5.

  • Las 6 de la tarde (18:00): Es el número 0,75.

  • Las 6 (06:00) de la mañana del día 01/06/2020: Es el número 43.983,25…

Podemos ver qué número le corresponde a una fecha/hora modificando el formato de la celda a Número > Estándar (menú Formato > Celdas … > Pestaña: Números > Categoría: Número > Formato: Estándar). De la misma manera, si a una fecha más reciente se le resta una fecha más antigua nos da como resultado el número de días transcurridos entre las dos fechas (igual que una resta con números). 

Eso sí, las fechas debemos introducirlas como fechas, no como números, de la conversión interna ya se encarga Calc.

Intervalo de celdas

Sólo admite como válidos aquellos valores que se encuentran en un determinado rango o área de celdas de la misma o distinta hoja. Ese rango o área de celdas debe estar formado por un número de celdas de una sola columna o de una sola fila. Si especificamos varias columnas y filas sólo se utiliza la primera columna. El rango del celdas se puede especificar de forma explícita, ejemplo: $NOMBRE_HOJA.$A$2:$A$9 (en la Ayuda de LibreOffice Calc Direcciones y referencias, absolutas y relativas encontraréis más información sobre las referencias a celdas), o como un área de base de datos con nombre (menú Datos > Definir intervalo …), o un área con nombre (menú Hoja > Intervalos y expresiones con nombre … > Definir). Personalmente prefiero esta última porque puedo crear “listas dinámicas” o listas que irán mostrando más o menos valores conforme vaya añadiendo o suprimiendo celdas en el área o rango correspondiente. Veamos cómo crear una “lista dinámica”:

En primer lugar, insertamos una nueva hoja a la que llamaremos “LISTAS” (o el nombre que queramos darle, obviamente).

En el cuadro de diálogo de Hoja > Intervalos y expresiones con nombre … > Definir escribimos:

  1. Nombre: L_NOMBRE_LISTA (el que deseemos)

  2. Intervalo o expresión de fórmula:

    DESREF($LISTAS.$A$2; 0; 0; CONTARA($LISTAS.$A$2:$A$16))

    Esta función nos devuelve un rango máximo de 15 celdas no vacías (CONTARA($LISTAS.$A$2:$A$16) comenzando en la celda $LISTAS.$A$2 y en la misma columna (0;0). Para saber más sobre esta función consulta La función DESREF en la Ayuda de Calc. Es muy importante no dejar celdas varias entre valores consecutivos.

  3.  Alcance: Documento (Global).

Una vez comprobado que está todo correcto pinchamos en el botón Añadir. Los nuevos valores se irán mostrando sin necesidad de ir modificando Datos > Validez…

Lista

Sólo permite las cadenas de texto o valores numéricos/fechas/horas especificados en el cuadro de diálogo. La diferencia entre “Lista” e “Intervalo de celdas” está en “dónde figuran los valores para la lista”. Mientras que en el primero escribimos los valores en el mismo cuadro de diálogo, en el segundo están en un rango de celdas de cualquier hoja.

¿Cuándo usar uno u otro? Pues bien, si la lista es inmutable, es decir, no cambia, podremos usar “Lista”; ahora bien si queremos hacer uso de una “lista dinámica” entonces deberemos usar “Intervalo de celdas” como hemos visto anteriormente. También cuando los valores se encuentran en una misma fila o columna.

En ambos casos si marcamos “Mostrar la lista de selección” nos aparecerá un desplegable con todos los valores posibles. Si no la activamos entonces tendremos que teclear el dato correspondiente con la posibilidad de cometer un error de mecanografía (no es aconsejable). Y si marcamos “Ordenar ascendentemente” se mostrará ese desplegable con los valores ordenados de menor a mayor, en el caso de valores numéricos/fechas/horas, o en orden alfabético en caso de cadenas de texto, independientemente de si están ya ordenados o no todos esos valores.

Longitud del texto

Sólo se dará por válido aquel texto cuyo número de caracteres, incluyendo espacios si los hay, coincida con los posibles valores especificados.

Por ejemplo si seleccionamos que la longitud del texto sea menor que o igual a 10 entonces admitirá “Ingresos” (8 caracteres) pero no “Extrapresupuestaria” (19 caracteres).

Personalizado

Esta opción sólo figura en las versiones más recientes de LibreOffice Calc y funciona igual que la opción “La fórmula es” que vimos en el artículo LibreOffice Calc: Formato condicional (segunda parte), es decir, se dará como válido aquel dato que cumpla con la fórmula especificada o, dicho de otra forma, cuando el resultado de la fórmula sea VERDADERO. Veamos unos ejemplos tomando como referencia la celda A1 de cualquier hoja:

  • Admitir sólo cadenas de texto: ESTEXTO (A1) 

  • Admitir sólo números: ESNUMERO(A1) ; Admitir sólo números pares: ESPAR(A1) ; Admitir sólo números impares: ESIMPAR(A1) ; Admitir sólo números múltiplo de 13: RESIDUO(A1;13)=0

  • Admitir sólo si la letra del DNI español es correcta:

    DERECHA(A1)=MID(“TRWAGMYFPDXBNJZSQVHLCKE”;RESIDUO(VALOR(IZQUIERDA(A1;LARGO(A1)-1));23)+1;1)

  • Admitir sólo si el año de la fecha coincide con el año actual: AÑO(A1)=AÑO(HOY()) ; Admitir sólo si el mes de la fecha coincide con el mes actual: MES(A1)=MES(HOY()) ; Admitir sólo si la fecha es un día de “Lunes” a “Viernes”: Y(DIASEM(A1)<>1;DIASEM(A1)<>7) ; Admitir sólo si la fecha introducida está comprendida entre HOY y los 30 días posteriores: Y(A1>=HOY();A1<=(HOY()+30)

  • Admitir sólo si el número introducido es un posible número de teléfono de España:   Y(ESNUMERO(A1);LARGO(A1)=9

  • Admitir sólo si el texto introducido no contiene espacios dobles/triples/…:   A1=ESPACIOS(A1)

  • Admitir sólo si el texto introducido no contiene ningún espacio:    A1=SUSTITUIR(A1;” “;””)

  • Admitir sólo si el texto introducido es un número en formato hexadecimal (base 16):

    ESNUMERO(SUMA.PRODUCTO(ENCONTRAR(MID(A1;FILA(INDIRECTO(“1:”&LARGO(A1)));1);”0123456789ABCDEF”)))

  • Admitir sólo si el texto introducido es un número de 10 cifras cuyas 4 primeras coincide con el año actual:

    Y(LARGO(A1)=10;VALOR(IZQUIERDA(A1;4))=AÑO(HOY());ESNUMERO(VALOR(DERECHA(A1;6))))

  • Admitir sólo si el texto introducido tiene 16 caracteres, los 6 primeros son “CONTE-” o “CONTI-” y los 10 restantes es un número:

    Y(LARGO(A1)=16;O(IZQUIERDA(A1;6)=”CONTE-“;IZQUIERDA(A1;6)=”CONTI-“);ESNUMERO(VALOR(DERECHA(A1;10))))

  • No admitir valores repetidos en el rango A1:A10:   CONTAR.SI($A$1:$A$10;A1)=1

  • … Como se puede comprobar el límite está en nuestra imaginación.

PESTAÑA   “AYUDA DE ENTRADA”

Se mostrará el mensaje especificado al seleccionar la celda que contiene la validación de datos siempre que esté seleccionado “Mostrar ayuda de entrada al seleccionar una celda”. Es una forma de “advertir” qué valores son válidos para la celda en cuestión.

PESTAÑA  “AVISO DE ERROR”

Se mostrará el mensaje especificado siempre que esté seleccionado “Mostrar mensaje de error al introducir valores no válidos” y se haya introducido un valor no válido. Las acciones posibles son:

  • Detener: El valor no válido introducido no se admite de ninguna de las maneras.

  • Aviso/Información: El valor no válido introducido se admite si se pulsa el botón Aceptar y no se admite si se pulsa Cancelar.

     

  • Macro: Se ejecuta la macro especificada mediante el botón Examinar. Pero ¿qué es una macro? Una macro es una serie de instrucciones escritas en un lenguaje de programación (LibreOffice Basic, Python, …) que se guardan dentro del archivo de Calc para poder ser ejecutadas cuando la necesitemos. Se necesita tener conocimientos de programación para hacer uso de esta opción.

Por último hay que hacer referencia a la casilla de verificación “Permitir celdas vacías” que se encuentra en la pestaña “Criterios” . En combinación con Herramientas > Detective > Marcar los datos incorrectos nos permite detectar aquellas celdas con validación de datos que, al estar vacías, se mostrarán como datos incorrectos (opción desactivada) o no (opción activada).

Para quitar esas elipses rojas alrededor de las celdas con “datos no válidos” tendremos que seleccionar Herramientas > Detective > Eliminar todos los rastros.

Este artículo se ha escrito utilizando LibreOffice Writer, Calc e Impress 6.3.5 en su versión empresarial, también llamada “estable”.

Saludos cordiales.

Para enviar sugerencias, comentarios o colaboraciones, escribe a revista.iaap@juntadeandalucia.es

Puedes encontrar más artículos sobre cómo manejar herramientas informáticas en nuestra sección de Tecnología Práctica. Y un montón de cosas más en cada uno de nuestros números