Traducir el blog

Calendario Laboral Dinámico en Excel

Posted on diciembre 03, 2020 by Excel Pedro Wave

🔝To translate this blog post to your language, select it in the top left Google box.


Cómo crear un calendario laboral en Excel con una tabla dinámica

Visto el éxito que ha tenido mi anterior artículo:

Calendario en Excel con una tabla dinámica

Me he propuesto aprovechar el calendario de la tabla dinámica para crear un calendario laboral, importando las fechas dinámicamente.

En la siguiente imagen se ve el aspecto de este calendario laboral, con una segmentación para seleccionar el año, con los colores para distinguir los días festivos nacionales, regionales y locales, con el día de hoy coloreado en amarillo, con los fines de semana en rojo claro, con los 12 meses del año elegido y con hasta 4 festivos visualizados por cada mes.

Voy a explicar las características más relevantes de este calendario con la intención de que seas capaz por tí mismo de adaptarlo a tus necesidades o de crear tu propio calendario, ¿te parece?


Copyright

Yo, Pedro Wave, estoy publicando bajo una licencia Creative Commons License

Attribution-NonCommercial-ShareAlike 3.0 Unported (CC BY-NC-SA 3.0)

https://creativecommons.org/licenses/by-nc-sa/3.0/

Los términos de la licencia son:

  • Atribución: Otorgue el crédito apropiado, especialmente mantenga mi nombre y el nombre de mi blog en el libro de trabajo y el código.
  • Compartir igual: Regalarlo gratis. Lo estoy regalando gratis, así que también tiene que hacerlo igual.
  • No comercial: No use mi plantilla y código para crear una plantilla o libro de trabajo para la venta comercial.


Descarga

Descarga este calendario laboral desde Google (con el botón "Excel Download") o desde el enlace a Microsoft OneDrive:

Calendario_Laboral_Dinámico_PW1.xlsx 


Vídeo con explicaciones

En este vídeo puedes seguir las explicaciones de cómo he creado este calendario:

Si después de ver el vídeo no te ha quedado claro o prefieres las explicaciones paso a paso, sigue leyendo.


Diseño Técnico

A continuación daré una explicación de cómo crear un calendario laboral a partir de una tabla dinámica.

Características más relevantes del calendario laboral:

  1. Admite un rango de años desde 2020 hasta 2050.
  2. Muestra los 12 meses del año como 4 trimestres.
  3. El calendario se puede imprimir.
  4. Los festivos nacionales, regionales y locales están coloreados y se describe cada día festivo.
  5. El día de hoy está coloreado de amarillo, y se selecciona con un hipervínculo.
  6. Se pueden mostrar u ocultar los números de semana, siempre que la hoja esté desprotegida. Las columnas con los números de semana están agrupadas:
    • Nivel 1: Oculta las columnas B; K y T.
    • Nivel 2: Muestra las columnas B; K y T.

Para diseñar este calendario hacen falta 4 hojas:

  • 'Calendario_Laboral': con el calendario dinámico.
  • 'Eventos': con la tabla de eventos, por ejemplo con los días festivos.
  • 'Calendario Dinámico': con la tabla dinámica en forma de calendario. Se puede ocultar.
  • 'Fechas': con la tabla de fecha que es el origen de datos de la tabla dinámica. Se puede eliminar.

Todas estas hojas están protegidas sin contraseña.


Hoja 'Fechas'

En esta hoja está el origen de datos de la tabla dinámica, como una tabla de 11.324 filas, con fechas del 1 de enero de 2020 al 31 de diciembre de 2050.

Hacen falta 3 campos para la tabla de fechas:

  • Fecha: el primer día es el 1 de enero de 2020 y los demás se obtienen añadiendo un uno al día anterior: =A2+1
  • Día de la semana: =DIASEM([@Fecha];2)
  • Número de semana: =NUM.DE.SEMANA([@Fecha];2)

El segundo argumento vale 2 para que los días de la semana vayan del 1-lunes al 7-domingo.

Después de generar la tabla dinámica, esta hoja de fechas se puede eliminar para reducir el tamaño del archivo y aumentar su rendimiento.


Hoja 'Calendario Dinámico'

En esta hoja se ha creado un calendario a partir de una única tabla dinámica, con este aspecto:

Si quieres saber cómo crear este calendario dinámico debes leer este artículo de mi blog:

Calendario en Excel con una tabla dinámica


TRUCO: La segmentación de datos de "Años" sólo permite seleccionar un único año.

Si se selecciona más de un año, salta un mensaje de advertencia:

"No se puede cambiar parte de una celda combinada." 

Para continuar presiona el botón: Aceptar


Se han combinado celdas a propósito en la fila 94 para:

"NO PASAR DE ESTA FILA - Seleccionar un único año"



TRUCO: Con estas celdas combinadas se consigue que no pueda crecer la tabla dinámica y, por lo tanto, no se pueda seleccionar más de un año…

ATENCION: La hoja 'Calendario Dinámico' se puede dejar oculta por ser auxiliar para calcular los datos del calendario laboral.


Hoja 'Eventos'

Esta hoja contiene la tabla de eventos con 3 campos:

  • Fechas: Con los días festivos.
  • Tipos de fechas: Nacionales; Regionales y Locales.
  • Eventos: Descripción del festivo.

Como ejemplo se han incluido los festivos de 2020 y 2021 para la ciudad de Zaragoza, Aragón, España.

Los eventos festivos pueden ser manualmente editados, añadidos y eliminados para incluir los festivos de tu pueblo o ciudad hasta el año 2050.


Hoja 'Calendario_Laboral'

El año del calendario se elige con la segmentación de datos de "Años".

La segmentación en 2 filas permite seleccionar un año del 2020 al 2050.

Como esta segmentación de años está conectada con la tabla dinámica que hemos visto antes, si seleccionas más de un año salta la advertencia:

"No se puede cambiar parte de una celda combinada."

Para continuar presiona el botón: Aceptar

Los nombres de los meses (con formato de celda: mmmm) se obtienen para el año 2000 (fuera del rango de años del calendario) con las fórmulas:

  • enero: =FECHA(2000;1;1)
  • resto de meses: =FIN.MES(B7;0)+1

Los nombres de los días de la semana se obtienen de la tabla dinámica con fórmulas del tipo: ='Calendario Dinámico'!C$3

Los números de semana se obtienen así:

  • La primera semana de enero: =1
  • La primera semana de febrero a diciembre es la penúltima semana del mes anterior, si no está completa, y es la última semana del mes anterior si la penúltima está completa: =SI(CONTAR.SI(C13:I13;0)>0;B13;B14)
  • Para otras semanas se añade un 1.

ATENCION: Los días (formato de celda: d) se obtienen con la función para importar datos de la tabla dinámica:

=SI.ERROR(IMPORTARDATOSDINAMICOS("Fecha";'Calendario Dinámico'!$B$2; "Fecha";MES($B$7); "Día Semana";C$8; "Núm. Semana";$B9; "Años";$K$2);0)

Por ejemplo, para el mes de enero:

  • El mes se obtiene de la cabecera con el nombre del mes. En este caso de la celda $B$7
  • El día de la semana se obtiene de la fila con los nombres de los días, de "lun" (C$8) a "dom" (I$8).
  • El número de semana se obtiene de la columna $B y filas 9 a 14.
  • El año se obtiene de la celda $K$2 con el año elegido.

IMPORTANTE: Todas las fechas son fechas de Excel con sus números de serie. Que sean fechas de Excel ayuda a buscarlas en la tabla de festivos para aplicarles formatos condicionales.

En el menú: Fórmulas - Administrador de Nombres se pueden analizar los nombres definidos que se usan en las fórmulas de este calendario.

Comienzan por "Rango_"

Con 3 nombres se definen las columnas de la tabla de eventos: TablaEventos

Rango_Hoy llama a la función: =HOY()

Debajo de cada mes hay hasta 4 días festivos y su descripción, gracias a una fórmula matricial oculta (con formato: ;;;) en las columnas con los números de semana.

Las fórmulas matriciales se introducen presionando a la vez las teclas: Control + Mayúsculas + Intro

Aparecen automáticamente unos corchetes.

Fórmula matricial del rango B16:B19:

{=SI.ERROR(K.ESIMO.MENOR(SI($K$2 & MES(B7)=AÑO(Rango_Fechas) & MES(Rango_Fechas); FILA(Rango_Fechas)-MIN(FILA(Rango_Fechas))+1;""); FILA()-FILA(B15));0)}

El día festivo se obtiene con:

  • C16: =SI(B16=0;""; INDICE(Rango_Fechas;B16))
  • D16: =SI(B16=0;""; INDICE(Rango_Eventos;B16))


En la celda V4 (de color amarillo) hay una fórmula matricial oculta (con formato: ;;;):

{=DIRECCION( MIN(SI(Rango_Hoy=Rango_Calendario;FILA(Rango_Calendario);100)); MIN(SI(Rango_Hoy=Rango_Calendario;COLUMNA(Rango_Calendario);100)))}

Se obtiene un texto con la celda del día de hoy o $CV$100 si el año seleccionado no contiene hoy.

La fórmula con el hipervínculo al día de hoy está en la celda W4:

=HIPERVINCULO("[" & SUSTITUIR(CELDA("nombrearchivo");"[";"") & "!" & SI($V$4="$CV$100";"$T$2";$V$4);Rango_Hoy)

Al hacer clic en el hipervínculo se selecciona el día de hoy.


Con 3 formatos condicionales con fórmulas se colorean los días:
  • Entresemana (blanco crudo): =Y(DIASEM(B7;2)<6;B7>40000)
  • Fin de semana (anaranjado claro): =Y(DIASEM(B7;2)>5;B7>40000)
  • Hoy (amarillo): =Y(B7=Rango_Hoy;B7>40000)

Con 3 formatos condicionales se colorean los tipos de días festivos. La fórmula es: =Y(B7>40000;SI.ERROR(INDICE(Rango_Tipos;COINCIDIR(B7;Rango_Fechas;0));"")=INDICE(Rango_Tipos_Fechas;n;1))

Siendo n:

  • 1 - Nacionales: verde. 
  • 2 - Regionales: azul.
  • 3 - Locales: púrpura.

Las fórmulas se aplican a valores de celda >40000, por lo que no se aplica formato condicional a fechas anteriores al año 2010. Como se han usado fechas del 2000 para los nombres de los meses, éstos no cambian de color con el formato condicional.

NOTA: Se pueden cambiar estas celdas:

  • B2: Calendario Laboral, con el nombre que quieras, por ejemplo: Calendario Fútbol
  • T2: Zaragoza, con el nombre de tu pueblo o ciudad.


En estas 4 celdas se definen los tipos de días:

  • Z63: Festivos
  • Z64: Nacionales
  • Z65: Regionales
  • Z66: Locales

BONUS: Si quieres que sea un calendario con los partidos de fútbol de tu equipo favorito, edita las celdas:

  • Z63: Fútbol
  • Z64: La Liga
  • Z65: Champions
  • Z66: Copa del Rey

Y edita la hoja 'Eventos' con estos 3 tipos de fecha.


Agradecimiento

Para hacer este calendario me he inspirado en las siguientes páginas, a cuyos autores les estoy muy agradecido:

AyudaExcel.com Sergio Propergol  Plantillas calendario en Excel 2021

ExcelFORO         Ismael Romero    Calendarios en Excel. Fórmulas desbordadas

xelplus.com        Leila Gharani       Excel Calendar with Just ONE Formula!


Espero que este calendario anual, basado en una tabla dinámica, te sirva y te ayude a preparar tus propios calendarios.

Si encuentras una errata, avísame mediante un comentario para subsanarla en una próxima revisión. Gracias anticipadas por tus comentarios.

Tienes más ejemplos de mis calendarios publicados en esta página de mi blog:

https://pedrowave.blogspot.com/search/label/calendario

Prueba este nuevo calendario dinámico mucho más avanzado:

Calendario Laboral con Festivos Dinámicos | #ExcelPedroWave

6 Response to "Calendario Laboral Dinámico en Excel"

.
gravatar
Excel Pedro Wave Says....

Con este calendario he pretendido enseñar unas cuantas características esenciales de Excel:

1) A usar tablas dinámicas con agrupaciones de fechas y con formatos condicionales, para conseguir un calendario dinámico.

2) A usar segmentaciones de datos de los campos de las tablas dinámicas, para seleccionar un valor y poder filtrar la tabla dinámica.

3) A usar tablas dinámicas para crear CdM - Cuadros de Mando, o en este caso un calendario laboral, gracias a la función IMPORTARDATOSDINAMICOS, con la que se obtienen los valores resumidos de las tablas dinámicas.

4) A usar formatos condicionales con fórmulas.

5) A usar fórmulas matriciales para encontrar la dirección de una celda que coincida con un valor dentro de un rango de celdas. Esta dirección es auxiliar para conseguir el hipervínculo que selecciona el día de hoy.

6) A usar fórmulas matriciales para obtener varias filas con un mismo valor, consiguiendo saber cuáles son los 4 días festivos de cada mes.

¿Conocías estas técnicas con Excel?
¿Las has aprendido leyendo mi artículo?
¿O sólo quieres usar el calendario sin aprender nada más?

.
gravatar
Ruben Dario stricker Says....

Excelente aporte Pedro Gonzalvo Escribano, muy útil y bien diseñado.
Gracias por compartir...
Todos están invitados a Mi Grupo de Excel!
https://www.facebook.com/groups/Excel.Aplicaciones.Para.Todos
Saludos...

.
gravatar
Excel Pedro Wave Says....

Muchas gracias Ruben por tu amable comentario.

Con tu beneplácito seguiré publicando sobre Excel en este gran grupo:
https://www.facebook.com/groups/Excel.Aplicaciones.Para.Todos

.
gravatar
Anónimo Says....

Muy bueno tu contenido. Tus aportes me son muy útiles para mi trabajo del día a día. Agradezco tus aportes y sobre todo, que nos permitas revisar el contenido de las fórmulas para aprender algo nuevo siempre. Bendiciones.

.
gravatar
Excel Pedro Wave Says....

Me encanta que aprecies mi contenido y que sea útil en tu trabajo. Todo lo que publico intento que sea educativo, para lo que en todos los archivos se pueden analizar las fórmulas y las macros.
Gracias por seguirme.

Leave A Reply

Indícame las erratas que encuentres y qué es lo que te gustaría ver en los próximos artículos.

Mi lista de blogs