Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Como calcuar fecha en que finaliza vacaciones

595 views
Skip to first unread message

nio

unread,
Apr 6, 2008, 1:20:00 AM4/6/08
to
Saludos a todos, de atemando agradezco el apoyo.
Resulta que estoy haciendo un programa de vacaciones para mas de 250
empleados para este 2008, me gustaria y serviria saver como en excel puedo
determinar la fecha en que un empleado regresaria de sus vacaciones teniendo
lo sig.

dias con derecho (habiles) ->16
fecha en que sale el dia lunes 5 de mayo 2008
haciendo el calculo manual el trabajador regresa el dia viernes 23 de mayo
2008

saben de alguna otra forma de hacer este calculo en excel considerando dias
festivos y dias domingos?

--
Salu2, Gracias desde Morelia Mich.

Héctor Miguel

unread,
Apr 6, 2008, 2:07:52 AM4/6/08
to
hola, !

> ... haciendo un programa de vacaciones para mas de 250 empleados para este 2008
> ... como en excel puedo determinar la fecha en que un empleado regresaria de sus vacaciones teniendo lo sig.


> dias con derecho (habiles) ->16
> fecha en que sale el dia lunes 5 de mayo 2008
> haciendo el calculo manual el trabajador regresa el dia viernes 23 de mayo 2008
> saben de alguna otra forma de hacer este calculo en excel considerando dias festivos y dias domingos?

si necesitas calcular una fecha "de regreso" de un periodo (de disfrute) vacacional
y dependiendo de cuales sean tus dias considerados como festivos
(y alguno que otro detalle que pudiera estar pendiente como si el sabado es dia laboral)...
encontraras una funcion personalizada y propuestas por funciones de hoja de calculo en: http://tinyurl.com/bpnjf

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector


nio

unread,
Apr 6, 2008, 2:40:01 AM4/6/08
to
Exelente mi estimado Hector Miguel.
Te agradezco tu pronta respuesta
Voy a tratar de entender estas formulas y te comento
Gracias, aaaa y por lo que veo ya estas respondiendo las preguntas que
siguen.
Otra vez Gracias.
--
Saludos.

Carlos Muñiz

unread,
Apr 6, 2008, 3:40:00 AM4/6/08
to
Buen día Nio;

Si no quieres meter código, hay una forma más sencilla, ahí van las
instrucciones:

Ve a Tools+Add Ins y seleccionas la casilla ANALYSIS TOOLPAK y esto te
libera para que puedas utilizar una fórmula para lo que tu quieres:

Suponiendo que en A1 tienes la fecha de inicio de sus vacaciones, en B1 los
días a disfrutar, y en la columna C los días festivos y todos los domingos
del año. L afórmula será la siguiente:

=WORKDAY(A1,B1,C1:C20)

Suponiendo que en C20 terminas tus días festivos y domingos.

Espero y te sirva.

Saludos desde Monterrey, México.
Carlos Muñiz
emec...@hotmail.com


"nio" escribió:

Héctor Miguel

unread,
Apr 6, 2008, 3:56:39 AM4/6/08
to
hola, Carlos !

> Si no quieres meter codigo, hay una forma mas sencilla, ahi van las instrucciones:
> Ve a Tools+Add Ins y seleccionas la casilla ANALYSIS TOOLPAK... para que puedas utilizar una formula para lo que tu quieres:
> Suponiendo que en A1 tienes la fecha de inicio de sus vacaciones, en B1 los dias a disfrutar
> y en la columna C los dias festivos y todos los domingos del a#o. La formula sera la siguiente: =WORKDAY(A1,B1,C1:C20)
> Suponiendo que en C20 terminas tus dias festivos y domingos...

de la parte final de la consulta de OP...
> " ... forma de hacer este calculo en excel considerando dias festivos y dias domingos?"

pareciera desprenderse que los sabados se consideran dia laboral y...
(hasta donde se) la funcion workday (dia.lab en espanol) considera los sabados como NO laborables

(entonces) existe la posibilidad de que el calculo requiera de "algo mas" que (el solo uso de) la funcion dia.lab -?-
(este punto se trata en las conversaciones sugeridas)

habra que esperar por la retro-alimentacion de OP ;)
saludos,
hector.


nio

unread,
Apr 6, 2008, 11:18:01 AM4/6/08
to
Buen día a todos.
Mi estimado Hector Miguel agradezco tu interes
Estoy estudiando las conversaciones que me sugeriste y creo que son la
solución que estoy buscando
Podrias de favor explicar un poquito mas de que se trata la funcion
persanaizada
=mente con la función k.esimo.menor
Solo hay que nombrar en excel el rango de los dias feriados?
Si pudieras dar un ejemplo o explicar la forma en que por medio de la
función personalizada o formula se puede resolver este planteamiento:
F/C A B C D
1 Diasc/dere. Dia descan 1º Dia Vac
2 17 Sabado Lun 5 de Mayo
3
Cual es el ultimo dia de Vac.
Que dia se presenta a trabajar

Si me pudieras apoyar mi estimado.
Estoy de acuerdo en que estos puntos se ven mas a detalle en la conversación
que sugieres pero deveras no le entendi

Saludos..

--

Héctor Miguel

unread,
Apr 6, 2008, 5:10:53 PM4/6/08
to
hola, !

__ 1 __
> ... favor explicar un poquito mas de que se trata la funcion persanalizada
__ 2 __
> =mente con la funcion k.esimo.menor


> Solo hay que nombrar en excel el rango de los dias feriados?

__ 3 __
> ... un ejemplo o explicar la forma en que por... la funcion personalizada o formula se puede resolver este planteamiento:


> F/C A B C D
> 1 Diasc/dere. Dia descan 1º Dia Vac
> 2 17 Sabado Lun 5 de Mayo
> 3
> Cual es el ultimo dia de Vac.
> Que dia se presenta a trabajar

en todos los casos se supone/espera/asume/... que se trabaja con datos numericos-fecha (NO textos), entonces...
el dato que representas para la celda B2 (Sabado) es necesario modificarlo por el numero 7 (siete)
que es el que corresponde al dia sabado usando la funcion diasem(<fecha>)

1) la funcion (y lo que hace) viene explicado (creo que) muy claramente en los textos iniciales de la funcion misma...
' Funcion que suma los dias habiles de vacaciones
' ** ARGUMENTOS
' Fecha_Inicial = fecha a partir de la cual se empieza a contar
' Dias_Laborables = numeros de dias de vacaciones que le tocan que se quieren contar
' Dias_Festivos = dias a omitir en la cuenta como fechas especiales
' Omitir_Dias = dia a omitir como dia de la semana de descanso
' Domingo = 1
' Lunes = 2
' etc...
' Sabado = 7
' Devuelve el dia habil siguiente como fecha

2) en las formulas es necesario "sustituir" (algunos de) los datos "camuflados" a falta de los rangos especificos en la consulta
fecha_inicial => la celda que contiene el dato-fecha del primer dia de disfrute vacacional
dias_laborables => la celda que contiene el numero de dias (laborables) a que se tiene derecho como vacaciones
dias_festivos => el rango de celdas que contiene los datos-fecha de que dias se consideran festivos
-> la funcion k.esimo.menor(... solo hace "su trabajo" contabilizando dias laborables hasta alcanzar el numero de dias de vacaciones
-> las formulas son de "entrada matricial" (es decir, al introducirlas/editarlas se confirman con ctrl+shift+enter, NO con solo el enter)

3) para ajustar la funcion personalizada y las formulas propuestas a los datos de tu ejemplo (habiendo cambiado Sabado a 7-numerico)
y suponiendo que tienes un rango con las fechas festivas en A7:A9
y que el dia laboral en que se presenta a trabajar lo pones (o usas la formula) en la celda D2

OJO con el separador de argumentos, mi sistema usa a la coma ',' NO al punto y coma ';' :D

a) que dia se presenta a trabajar:

-> con la funcion personalizada: [D2] =Dia_Laborable(C2,A2,A7:A9,B2)

-> por la formula matricial: [D2]
=c2+k.esimo.menor(
si((diasem(c2+(fila(indirecto("1:"&a2*10))))<>b2)
*esnod(coincidir(c2+(fila(indirecto("1:"&a2*10))),a7:a9,0))
,fila(indirecto("1:"&a2*10))),a2)

b) cual es el ultimo dia de vacaciones:

-> con la funcion personalizada: [E2] =Dia_Laborable(D2,-1,A7:A9,B2)

-> por la formula matricial: [E2]
=d2-k.esimo.menor(si((diasem(e2-(fila(indirecto("1:10"))))<>b2)
*esnod(coincidir(e2-(fila(indirecto("1:10"))),a7:a9,0)),fila(indirecto("1:10"))),1)

si cualquier duda (o informacion adicional)... comentas ?
saludos,

hector.


nio

unread,
Apr 6, 2008, 11:00:01 PM4/6/08
to
Gracias Hector Miguel
Dispensa la ignorancia pero de verdad no sale por medio de la función
personalizada
Pudieras de favor indicarme el codigo que se deve pergar en VB.
O mas bien indicarme de favor el codigo y donde devera pegarse es decir en
VB dentro de la hoja? o dentro del ThisWorkBook
Bueno este es el Codigo que amablemente me indicaste la ruta para copiarlo:

Option Explicit

'Funcion que suma los dias habiles de vacaciones


'** ARGUMENTOS
'Fecha_Inicial = fecha a partir de la cual se empieza a contar
'Dias_Laborables = numeros de dias de vacaciones que le tocan que se
'quieren contar
'Dias_Festivos = dias a omitir en la cuenta como fechas especiales
'Omitir_Dias = dia a omitir como dia de la semana de descanso
' Domingo = 1
' Lunes = 2

' Martes = 3
' Miercoles = 4
' Jueves = 5
' Viernes = 6
' Sabado = 7

'Devuelve el dia habil siguiente como fecha

Public Function Dia_Laborable(ByVal Fecha_Inicial As Date, _
ByVal Dias_Laborables As Integer, _
ByVal Dias_Festivos As Range, _
ByVal Omitir_Dias As Range) As Date
Dim co1 As Integer
Dim r As Range
Dim Esfestivo As Boolean
Dim EsOmitido As Boolean
Dim Direccion As Integer

'Los dias laborables no pueden ser cero
If Dias_Laborables <> 0 Then
'Para saber si aumenta o disminuye la fecha
Direccion = 1
If Dias_Laborables < 0 Then Direccion = -1
Do
Esfestivo = False
EsOmitido = False
'Aumentamos o disminuimos en uno la fecha inicial
Fecha_Inicial = Fecha_Inicial + Direccion
'Buscamos en los dias festivos
For Each r In Dias_Festivos
If r.Value = Fecha_Inicial Then
'Si es festivo sale del ciclo
Esfestivo = True
Exit For
End If
Next r
'Si es festivo no es necesario buscar en dias omitidos
If Not Esfestivo Then
'Buscamos en dias omitidos en caso de que no sea festivo
For Each r In Omitir_Dias
If r.Value = Weekday(Fecha_Inicial) Then
'Si es omitido salimos del ciclo
EsOmitido = True
Exit For
End If
Next r
End If
'NO deber ser festivo ni omitido para incrementar
If Not Esfestivo And Not EsOmitido Then
co1 = co1 + 1
End If
DoEvents
'Continuamos mienstras sea menor a los dias_laborables
Loop While co1 < Abs(Dias_Laborables)
'Asignamos la fecha encontrada a la funcion
Dia_Laborable = Fecha_Inicial
Else
'Si es cero devuelve un error tipo #!VALOR¡
Dia_Laborable = ""
End If

End Function

Estoy haciendole como me indicas en la pasada respuesta.
Creo que el problema lo tengo en el Codigo
Donde debo pergarlo?

Muchas pero muchas Gracias ........Sigo trajajando
Te comento que por medio de la formlua esta todo correcto
Como dice ppSoto Gracias mi estimado Gurü
--
Saludos

Héctor Miguel

unread,
Apr 6, 2008, 11:57:34 PM4/6/08
to
hola, !

> ... no sale por medio de la funcion personalizada
> ... el codigo y donde devera pegarse es decir en VB dentro de la hoja? o dentro del ThisWorkBook...

las lineas del codigo las debes copiar/pegar en un modulo de codigo estandar/general/normal
y la forma de uso esta comentada en el mensaje anterior
(p.e.) asumiendo que los rangos de aplicacion (y su tipo de datos) son como en el ejemplo del menseja enterior...

> OJO con el separador de argumentos, mi sistema usa a la coma ',' NO al punto y coma ';' :D
>
> a) que dia se presenta a trabajar:
>
> -> con la funcion personalizada: [D2] =Dia_Laborable(C2,A2,A7:A9,B2)
>

> b) cual es el ultimo dia de vacaciones:
>
> -> con la funcion personalizada: [E2] =Dia_Laborable(D2,-1,A7:A9,B2)

si cualquier duda (o informacion adicional)... comentas ?
saludos,
hector.


Nio

unread,
Apr 7, 2008, 10:58:01 PM4/7/08
to
Buenas Noches.
Hector Miguel te agradezco la paciencia y el interes que prestas con todos
los del foro y en especial por todos los que necesitamos un poquito mas de tu
paciencia e interes.

La formula personalizada y la formula matricial funcionan de menera muy
sorprendente.

Gracias

Saludos.

0 new messages