LibreOffice Calc: Fórmula para calcular la letra del DNI.

Calcular la letra del DNI es un ejercicio clásico de la programación (al menos en el estado español, claro) y aquí ya revisamos en su día cómo hacerlo con Javascript. Pero algunos no programáis sino que simplemente trabajáis con software ofimático. En ese caso ¿se puede validar un DNI en una hoja de cálculo de Libre Office Calc? Se puede, aquí os dejo una fórmula para Libre Office en castellano:

=MID(“TRWAGMYFPDXBNJZSQVHLCKE”;1+RESIDUO(DERECHA(A1;8);23);1)

Siendo en este caso A1 la celda donde está el NIF almacenado.

Y si, como yo, tenéis el Libre Office en gallego entonces tendréis que traducir el nombre de las funciones, tal que así:

=MEDIO(“TRWAGMYFPDXBNJZSQVHLCKE”;1+RESTO(DEREITA(A1;8);23);1)

Os dejo una captura de cómo quedaría el resultado:
capturacalc

Funciones lógicas en las hojas de cálculo de Google Drive

Hace unos años habláramos aquí de funciones lógicas en LibreOffice. En aquel entonces ya existía Google Drive pero no conocía a mucha gente que lo utilizara para sus labores ofimáticas. Hoy por hoy su uso se ha popularizado bastante, así que mi idea es repetir la misma entrada, pero con las funciones lógicas de esta hoja de cálculo que, más o menos, son similares (aunque en caso del Drive son menos que en LibreOffice, se quedan en 7). Lo primero que veremos, la lista de funciones:

  • FALSO: Una función que no evalúa ningún dato, sólo devuelve el valor lógico false.
  • VERDADERO: Una función que no evalúa ningún dato, sólo devuelve el valor lógico true.
  • NO: Recibe una expresión lógica, su sintaxis sería NO(La_Expresión_Lógica) y devuelve el valor contrario al que recibe. Es decir, si la expresión que recibe es true la función devolverá false y viceversa.
  • SI: Esta función requiere tres parámetros que son una prueba lógica, un valor a devolver si se cumple y un valor a devolver si no, aunque sólo es obligatoria la prueba lógica. Más abajo os explicaré como anidar varios. La sintaxis básica es SI(prueba lógica; valor si se cumple; valor si no).
  • SI.ERROR: Función que recibe dos parámetros. Devuelve el valor del primero si este no es erróneo, en caso de que lo sea devuelve el segundo. La sintaxis es SI.ERROR(valor_a_evaluar,valor_si_error)
  • O: La función recibe varios argumentos y devuelve true en caso de que alguno sea verdadero, en caso de todos sean falsos devuelve false. La sintaxis es O(expresión1,expresión2,expresión3)
  • Y: La función recibe un número variable de argumentos. En caso de que todos sean verdaderos devuelve true y caso de que alguno sea false devuelve false. La sintaxis es Y(expresión1,expresión2,expresión3)

Ahora vamos con un ejemplo. Primero tenemos estos datos con nombres de usuarios, su ciudad y su edad. En base a la edad y la ciudad calcularemos un importe que tienen que pagar usando algunas de estas funciones lógicas. Las condiciones son las siguientes: si son de Madrid y mayores de 28 entonces pagan 100. Si son de Vigo, de Basauri o tienen más de 50 años entonces pagan 50. El resto pagan 200.

Ejemplo Drive Hoja Calculo 1

La función sería la siguiente:

=SI(Y(C2=“Madrid”;B2>28);100;SI(O(C2=“Vigo”;C2=“Basauri”;B2>50);50;200))

Aunque una vez la escribáis os la traducirá a la nomenclartura inglesa de las funciones:

=IF(AND(C3=“Madrid”;B3>28);100;IF(OR(C3=“Vigo”;C3=“Basauri”;B3>50);50;200))

Y el resultado de esos datos sería el siguiente:

Ejemplo con los datos calculados

¿Por qué un número elevado a 0 es igual a 1?

Esto se sale totalmente de la línea editorial del blog, desde luego, pero me apetecía contarlo por aquí. El caso es que en una charla de oficina comenté que una vez cuando cursaba 2º de ESO la profesora me hizo explicar en clase por qué cualquier número elevado a 0 es igual 1, y un compañero me discutió que no. Así que con 32 años me volvía a ver delante de una pizarra haciendo esta demostración:

Podemos expresar que X0 es el resultado de Xn-n siendo X cualquier número real menos el 0 y siendo n cualquier número real. O, por ponerlo con número, podemos decir 20 es el resultado de (por ejemplo) 22-2.

Entonces por propiedades de las potencias Xn-n es igual a Xn/Xn. Siguiendo el ejemplo anterior 22-2=22/22.

Por lo tanto tenemos que X0 = Xn/Xn, y siendo el numerador y el denominador iguales en la división el resultado es necesariamente 1. Es decir 20 = 22/22, por tanto 20 = 4/4. Y 4/4=1, así de simple.

¿Y en el caso del 00? Bueno, eso a mi ya me supera. Pero os dejo un enlace a otro blog donde lo explican y debaten, para que matéis vuestra curiosidad.