Calcular primer y ultimo día hábil del mes

En este artículo se mostrará como calcular el primer y/o último día hábil del mes, en principio sin contemplar los días festivos.

Para hallar el primer día hábil del mes, la idea es la siguiente:

  1. Calcular la fecha del primer día del mes.
  2. Ver el día de la semana que "cae" primer día del mes.
  3. Si se trata de un sábado hay que sumarle dos días, de ser un domingo se suma uno, y para el resto de los días es el propio primero.

Para hallar el último día hábil del mes, la idea es la siguiente:

  1. Calcular la fecha del último día del mes.
  2. Ver el día de la semana que "cae" el último día del mes.
  3. Si se trata de un sábado hay que restarle un día, de ser un domingo se restan 2, y para el resto de los días el mismo fin de mes.

Calcular primer y último día laborable en Microsoft Excel en español:

Primer día laborable del mes:


Último día laborable del mes:


Partiendo del supuesto que en A1 se encuentra la fecha perteneciente al mes en cuestión. Si se cambia por HOY() se obtiene el dato respecto al día actual.

Variante al Cálculo en Microsoft Excel en español:

En Excel hay una alternativa en la que si se pueden tener en cuenta dos días festivos.

Calcular el primer día hábil considerando los festivos se identifica el último día calendario del mes anterior y a este se le suma 1 día laborable.

Otra fórmula para calcular el primer día hábil del mes en Microsoft Excel sin considerar festivos.


Otra fórmula para calcular el primer día hábil del mes en Microsoft Excel considerando festivos.


Donde RANGO_DIAS_FESTIVOS corresponde a un rango donde se encuentra la lista de días festivos.

Calcular el primer día hábil considerando los festivos se identifica el último día calendario del mes corriente, a este se le suma 1 día calendario, y se le resta un día laborable.

Otra fórmula para calcular el ultimo día hábil del mes en Microsoft Excel sin considerar festivos.


Otra fórmula para calcular el ultimo día hábil del mes en Microsoft Excel considerando festivos.


Calcular primer y último día laborable del mes en Google Docs, OpenOffice.org Calc, Microsoft Excel en inglés:

Calcular primer día laborable del mes:


Calcular ultimo día laborable del mes:


Al no tener la función que identifica el último día del mes la formula queda un poco mas compleja.

Calcular primer y último día laborable del mes en Oracle:

Cálculo para el primer día laborable del mes:


Cálculo para el ultimo día laborable del mes:


Calcular primer y último día laborable del mes en MySQL:

Cálculo para el primer día laborable del mes:


Cálculo para el ultimo día laborable del mes:


Calcular primer y último día laborable del mes en Microsoft Access:

Cálculo para el primer día laborable del mes:


Consulta que toma datos de una supuesta tabla "datos".

Cálculo para el ultimo día laborable del mes:


Consulta que toma datos de una supuesta tabla "datos". Al no disponer de una función que calcule el ultimo día del mes calendario, se calcula el primer día del mes siguiente y se le resta uno (funciona aun para diciembre: 12 + 1 = enero).

5 comentarios:

Comunidad ADMRRHH dijo...

Consulta, refrente al tema... Favor, vuestra ayuda con lo siguiente:


Tengo una fecha de inicio y una de termino.

Ahora se calcular perfectamente la cantidad de dias laborales entre ambas fechas considerando los festivos (con DIAS.LAB), en esto no tengo inconveniente.

El problema me surge cuando quiero realizar el calculo en base a los rangos del 1er dia del Mes y el Ultimo.

Ejemplo:

La fecha inicial (FI) es : 01/06/2008
La fecha final (FT) es : 05/08/2008

La cantidad de dias habiles entre ambas fechas es: 46.


Ahora, lo que necesito es una formula que me cuente solo los dias que caben dentro del mes de Julio, osea: 22 dias.

Me explico, como en este caso las fechas (FI) y (FT) exceden el rango de fechas del mes de Julio la formula,la idea es que la formula cuante solo desde el 01 al 31. A su vez, si se produjeran los siguientes casos:


(FI)
14/07/2008

(FT)
05/08/2008

Que me cuente solo los dias entre el 14/07 al 31/07

Total: 16 dias

y


(FI)
01/06/2008

(FT)
24/07/2008

Que me cuente solo los dias entre el 01/07 al 24/07

Total: 17 Dias


Bueno, espero haber sabido explicarme.

Desde ya agradezco vuestra ayuda.

Atentamente; Leonardo

ElData dijo...

Para estos casos lo que debes de hacer es tomar en cuenta la intersección de estos dos rangos de fechas.

Para lograrlo deberás calcular la cantidad de días laborales que existen entre las siguientes fechas:

1) Fecha máxima entre las fechas iniciales de ambos períodos, o sea tomar en cuenta la fecha mayor entre la fecha inicial y el primero del mes que te interesa, en este caso 1 de julio.

2) Y la fecha mínima entre las fechas iniciales de ambos períodos, o sea tomar en cuenta la fecha menor entre la fecha final del período en cuestión y el fin del mes, o sea 31 de julio.

A nivel de fórmulas queda de la siguiente manera:

=DIAS.LAB(MAX(A2;FECHA(2008;7;1));MIN(A3;FECHA(2008;7;31)))

Donde en A2 se encuentra la fecha inicial, y en A3 la final del período.

Se tomó como fijo el mes de julio de 2008, puedes reemplazarlo por el valor de dos celdas más, o el cálculo del primer y ultimo día que está publicado.

Hay una cosa adicional a tener en cuenta que la formula DIAS.LAB incluye en la cuenta el día de inicio y fin del cálculo, por lo que te dará un día mas de lo que esperas. Si no te sirve así simplemente a la fecha inicial le sumas 1, o restarle 1 a la final (ojo no sirve restarle 1 al resultado ya que si un limite cae en día no laborable te da mal el resultado).

Cualquier cosa me avisas.

Anónimo dijo...

Excelente mi amigo, necesitava el primer dia habil del mes para oracle, solo tuve un problema pero aca te dejo como quedo no es nada solo la manera de hacer el trunc para el sysdate lo demas excelente, muchas gracias.
-----------------------------------
select trunc(sysdate, 'MONTH') + decode(to_char(trunc(sysdate, 'MONTH'), 'd'), '1', 1, '7', 2, 0) respecto_a_hoy from dual
------------------------------------

ElData dijo...

Gracias por la corrección, al momento de editarlo por error lo cambié, debía de ser:

trunc(sysdate, ‘mm’)

... o bien la forma como tu lo indicas.

Ya quedó corregido.

Anónimo dijo...

gracias por la ayuda !!! 10+