Calcular el día del año de una efeméride

 Hay efemérides (Real Academia de la Lengua Española, RAE: Acontecimiento notable que se recuerda en cualquier aniversario de él) que todos sabemos cuándo se celebran, por ejemplo, Año Nuevo, que siempre es el 1 de enero, siendo indiferente que ese día sea lunes, martes o cualquier otro día de la semana. Sin embargo hay otras que se celebran en un día de la semana concreto de un determinado mes, por ejemplo, el Día de la Madre, que en España se celebra el primer domingo del mes de mayo y en otros países el segundo domingo de ese mismo mes o el Día de Acción de Gracias (USA: Thanksgiving Day) que se celebra el cuarto jueves del mes de noviembre, así como las fechas relacionadas con la Semana Santa.


Blog Calc Efemérides
Imagen del archivo descargable


¿Cómo nos puede ayudar LibreOffice Calc a saber qué día concreto del año se celebrará esa efeméride?

Nos podemos encontrar con cinco casos:

  1. El primer DDDD del mes de MMMM, siendo DDDD un día de la semana cualquiera (lunes, martes, …, domingo) y MMMM un mes cualquiera (enero, febrero, …, diciembre).

  2. El último DDDD del mes de MMMM.

  3. El XXXX DDDD del mes de MMMM, siendo XXXX un ordinal (segundo, tercero o cuarto).

  4. El último DDDD del mes de febrero. Hay que tener en cuenta que hay años bisiestos y, por ese motivo, febrero tendrá 29 días en lugar de 28.

  5. Semana Santa.

 Caso 1. El primer DDDD del mes de MMMM.

Ejemplo: Día de la Madre (España) que se celebra el primer domingo del mes de mayo.

=FECHA(año;5;1+ELEGIR(DIASEM(FECHA(año;5;1));0;6;5;4;3;2;1))

Utilizaremos las siguientes funciones (información extraída de la Ayuda de Calc):

  • FECHA(Año; Mes; Día): Calcula una fecha, especificada por año, mes, día y lo muestra en el formato de la celda.

    Año es un entero entre 1583 [**] y 9957 o entre 0 y 99.

    Mes es un entero que indica el mes.

    Día es un entero que indica el día del mes.

    [**] ¿Por qué ese año? Ver Cambio al calendario gregoriano (Wikipedia).

  • ELEGIR(Índice; Valor 1 [; Valor 2 [; ... [; Valor 30]]]): Utiliza un índice para producir un valor a partir de una lista formada por hasta 30 valores.

    Índice es una referencia o número entre 1 y 30 que indica el valor que se va a tomar de la lista.

    Valor 1, Valor 2, ..., Valor 30 esta es la lista de valores introducidos como referencia a una celda o como valores individuales.

  • DIASEM(Fecha [; Tipo]): Devuelve el día de la semana correspondiente a la fecha proporcionada. El día se devuelve como un número entero entre 1 (domingo) y 7 (sábado) si no se indica ningún tipo, o bien si se indica tipo=1. Para los otros tipos debemos consultar la Ayuda.

Veamos cómo funciona la fórmula empleada con un ejemplo. El año será 2025 y como buscamos el primer domingo del mes de mayo la fecha inicial será el 1 de mayo de 2025:

  • DIASEM(FECHA(2025;5;1)) devuelve 5 (jueves).

  • ELEGIR(5;0;6;5;4;3;2;1) devuelve el número 3 que es el quinto parámetro de la función (sin contar el primero que es el índice). ¿Y por qué 3? Porque, al ser jueves, hay que sumar 3 días para llegar al domingo posterior. Si el 01/05/2025 fuera domingo (DIASEM = 1) entonces habría que sumar 0 (cero), si fuera lunes (DIASEM = 2) habría que sumar 6, y así sucesivamente para llegar al primer domingo del mes.

  • FECHA(2025;5;1+3) es igual al 4 de mayo de 2025 que es el primer domingo de mayo de 2025.

Caso 2. El último DDDD del mes de MMMM.

Ejemplo: Procesión de la Virgen de la Cabeza (Andújar, provincia de Jaén, España) que se celebra el último domingo del mes de abril.

=FECHA(año;4;30-ELEGIR(DIASEM(FECHA(año;4;30));0;1;2;3;4;5;6))

Las funciones empleadas son las mismas que en el caso anterior pero en este caso hay que restar días en lugar de sumar.

Veamos un ejemplo. El año será 2025 y como buscamos el último domingo del mes de abril la fecha inicial será el 30 de abril de 2025:

  • DIASEM(FECHA(2025;4;30)) devuelve 4 (miércoles).

  • ELEGIR(4;0;1;2;3;4;5;6) devuelve el número 3 que es el cuarto parámetro de la función (sin contar el primero que es el índice). ¿Y por qué 3? Porque, al ser miércoles, hay que restar 3 días para llegar al domingo anterior. Si el 30/04/2025 fuera domingo (DIASEM = 1) entonces habría que restar 0 (cero), si fuera lunes (DIASEM = 2) habría que restar 1, y así sucesivamente para llegar al último domingo del mes.

  • FECHA(2025;4;30-3) es igual al 27 de abril de 2025 que es el último domingo de abril de 2025.

Caso 3. El [segundo|tercero|cuarto] DDDD del mes de MMMM.

Ejemplo: Romería de Nuestra Señora de Valme (Dos Hermanas, provincia de Sevilla, España) que se celebra el tercer domingo del mes de octubre.

=FECHA(año;10;1+ELEGIR(DIASEM(FECHA(año;10;1));0;6;5;4;3;2;1)+14)

Veamos un ejemplo. El año será 2025 y como buscamos el tercer domingo del mes de octubre la fecha inicial será el 1 de octubre de 2025:

  • DIASEM(FECHA(2025;10;1)) devuelve 4 (miércoles).

  • ELEGIR(4;0;6;5;4;3;2;1) devuelve el número 4 que es el cuarto parámetro de la función (sin contar el primero que es el índice). ¿Y por qué 4? Porque, al ser miércoles, hay que sumar 4 días para llegar al primer domingo. Si el 01/10/2025 fuera domingo (DIASEM = 1) entonces habría que sumar 0 (cero), si fuera lunes (DIASEM = 2) habría que sumar 6, y así sucesivamente para llegar al primer domingo del mes.

  • FECHA(2025;10;1+4+14) es igual al 19 de octubre de 2025 que es el tercer domingo de abril de 2025. ¿Y ese 14 de dónde sale? Como ya hemos hallado el primer domingo, si le sumo 7 días me dará el segundo domingo del mes, si le sumo 14 días me dará el tercer domingo del mes y si sumo 21 el resultado será el cuarto domingo de ese mes.

Caso 4. El último domingo del mes de febrero.

En este caso debemos tener en cuenta que febrero tendrá 28 días, en el caso de no ser año bisiesto, o 29 días en el caso de que sí lo sea. Recordemos que un año es bisiesto cuando se cumple que el año es divisible por 4 pero, si también es divisible por 100, debe serlo por 400. No debemos preocuparnos por esto último ya que Calc trae la función ESAÑOBISIESTO(fecha) que nos dice si un año correspondiente a la fecha indicada es bisiesto o no.

La fórmula empleada es:

=FECHA(año;2;SI(ESAÑOBISIESTO(FECHA(año;2;28));29;28)-ELEGIR(DIASEM(FECHA(año;2;SI(ESAÑOBISIESTO(FECHA(año;2;28));29;28)));0;1;2;3;4;5;6))

Las dos funciones nuevas son:

  • ESAÑOBISIESTO(Fecha): Especifica si esa fecha pertenece a un año bisiesto. En caso afirmativo, la función devuelve el valor 1 (VERDADERO); en caso negativo, devuelve 0 (FALSO).

    Fecha debe contener una fecha válida.

  • SI(comparación; caso-Verdadero; caso-Falso): Realiza una comparación lógica y si el resultado es VERDADERO se ejecutará caso-Verdadero y si es FALSO se ejecutará caso-Falso.

Veamos un ejemplo. El año será 2024 y como buscamos el último domingo de febrero la fecha inicial se debe calcular para saber si el último día es el 29 (año bisiesto) o el 28:

  • SI(ESAÑOBISIESTO(FECHA(2024;2;28));29;28) devuelve 29 al ser 2024 un año bisiesto.

  • DIASEM(FECHA(2024;2;29)) devuelve 5 (jueves).

  • ELEGIR(5;0;1;2;3;4;5;6) devuelve el número 4 que es el quinto parámetro de la función (sin contar el primero que es el índice). ¿Y por qué 4? Porque, al ser jueves, hay que restar 4 días para llegar al último domingo. Si el 29/02/2024 fuera domingo (DIASEM = 1) entonces habría que restar 0 (cero), si fuera lunes (DIASEM = 2) habría que restar 1, y así sucesivamente para llegar al último domingo de febrero.

  • FECHA(2024;2;29-4) es igual al 25 de febrero de 2024 que es el último domingo de febrero de 2024.

Caso 5. Semana Santa.

Calcular las fechas relacionadas con la Semana Santa es muy fácil porque Calc ya nos aporta la función

=DOMINGOPASCUA(año)

que devuelve la fecha del Domingo de Pascua correspondiente al año proporcionado.

Veamos un ejemplo. El año será 2025:

  • Domingo de Pascua: =DOMINGOPASCUA(2025). Devuelve 20/04/2025.

  • Miércoles de Ceniza: =DOMINGOPASCUA(2025) - 46. Devuelve 05/03/2025.

  • Domingo de Ramos: =DOMINGOPASCUA(2025) - 7. Devuelve 13/04/2025.

  • Jueves Santo: =DOMINGOPASCUA(2025) - 3. Devuelve 17/04/2025.

  • Viernes Santo: =DOMINGOPASCUA(2025) - 2. Devuelve 18/04/2025.

  • Domingo de Pentecostés: =DOMINGOPASCUA(2025) + 49. Devuelve 08/06/2025.

  • Lunes de Rocío (España): =DOMINGOPASCUA(2025) + 50. Devuelve 09/06/2025.


Por último, debemos tener en cuenta, para la función ELEGIR, que los números de días a sumar o restar habrá que modificarlos dependiendo del día de la semana que queramos calcular:

ELEGIR(x; D; L; M; Mi; J; V; S):

  • Si x vale 1, domingo, se sumarán o restarán D días.

  • Si x vale 2, lunes, se sumarán o restarán L días.

  • Si x vale 3, martes, se sumarán o restarán M días.

  • Si x vale 7, sábado, se sumarán o restarán S días.


Si no sabéis cómo insertar un “control de número” como el que hay en el archivo descargable y queréis aprender debéis leer el artículo Caso práctico n.º 17: Controles de formulario (“botón” y “control de número”) de la revista digital EnRed@2.0 del Instituto Andaluz de Administración Pública (IAAP) de la Junta de Andalucía, con la que también colaboro en la sección de “Tecnología práctica”.

Muchas gracias por leer este artículo y saludos cordiales.

LibreOffice Community ver.7.6.7.2 (X86_64 es-ES) Windows 11

Se puede descargar el archivo de prácticas aquí.

Comentarios

  1. Me ha parecido muy interesante esta aportación

    ResponderEliminar
  2. Gracias por las aportaciones y los ejemplos

    ResponderEliminar
  3. Me ha sido super práctico. Muchas gracias. Espero que nos vayas poniendo más ejercicios prácticos

    ResponderEliminar
  4. Gracias por explicar esto de manera tan didáctica. Por favor cuando puedas publica más ejercicios prácticos

    ResponderEliminar

Publicar un comentario

Entradas populares de este blog

Celdas enlazadas (Datos ► Validez...)