Excel - DESAFIO:Formula para horas personal

 
Vista:

DESAFIO:Formula para horas personal

Publicado por Federico (1 intervención) el 12/07/2006 00:34:42
NECESITARIA QUE ME DEN UNA FORMULA PARA CALCULAR LAS HORAS DEL PERSONAL

VARIABLES
DE 06:00 A 21:00 SON 9 HS. NORMALES Y EL RESTO AL 50%
DE 0:00 A 6:00 SON HORAS NOCTURNAS
DE 21:00 A 24:00 SON HORAS NOCTURNAS

HAY QUE ACLARAR QUE NECESITO LA DISCRIMINACION ENTRE HS. NORMALES ( NO PUEDEN SER MAS DE 8), HORAS NOCTURNAS ( SI LAS NORMALES SON 8, ESTAS SON TODAS NOCTURNAS EXTRAS, SI NO LA DIFERENCIA ENTRE 8 Y LAS NOCTURNAS HASTA COMPLETAR LAS 8 SIN NOCTURNAS Y EL RESTO NOCTURNAS EXTRAS)
COMO VERAN ES ALGO COMPLICADO
DESDE YA MUCHAS GRACIAS
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:DESAFIO:Formula para horas personal

Publicado por Jose Luis (18 intervenciones) el 12/07/2006 13:31:02
¿cómo indicas las horas - P.ej. Inicio - Fin?
¿Hay fracciones de hora?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DESAFIO:Formula para horas personal

Publicado por José Luis (15 intervenciones) el 04/08/2006 10:04:15
Federico me ha comentado que la función VBA que a continuación expongo le ha funcionado perfectamente. Para todos los que la necesiten ...

------------inicio del código--------------
Function HorasTrabajo(HEntrada As Date, HSalida As Date, QTipoHora As String) As Integer
'Calcula las horas trabajadas y devuelve la cantidad de horas según QTipoHora.
'El empleado debe hacer un mínimo de horas -var HorasNormales- para que se contabilicen
'las horas extra
'El tipo de horas (TipoHoras) está definido por las variables HNormalI, HNormalF
'Sólo funciona con horas enteras
'::: QTipoHora : Tipo de hora a calcular
'::: HEntrada : Hora a la que comienza a trabajar
'::: HSalida : Hora a la que sale de trabajar
'---------------------------------------------------------------------------
Dim HorasDiaTipo(24) As String
Dim TipoHoras(4, 2)
Dim CIni(2) As Integer
Dim CFin(2) As Integer
Dim Limite(2) As Integer
Dim i, j, NCiclos As Integer
'
'Constantes que pueden ser parámetros
Const HorasNormales As Integer = 8
Const HNormalI As Integer = 6 ' Desde las 6:00 es Diaria
Const HNormalF As Integer = 20 ' Hasta las 20:59 es Diaria
'
'Asignacion de variables
TipoHoras(0, 0) = "TOTAL"
TipoHoras(1, 0) = "NOCTURNA"
TipoHoras(2, 0) = "NOCTURNA50"
TipoHoras(3, 0) = "NORMAL"
TipoHoras(4, 0) = "NORMAL50"
For i = 0 To 4
TipoHoras(i, 1) = 0
Next i
For i = 0 To 24
Select Case i
Case HNormalI To HNormalF
HorasDiaTipo(i) = "NORMAL"
Case Else
HorasDiaTipo(i) = "NOCTURNA"
End Select
Next i
' HEntrada del cálculo
' Día normal
CIni(1) = Hour(HEntrada)
CFin(1) = Hour(HSalida)
Limite(1) = 23
NCiclos = 1
' Si hay cambio de día (la hora de salida es menor que la de entrada)
If CIni(1) > CFin(1) Then
'Prepara dos ciclos de cálculo
' Primer ciclo cálculo
CIni(1) = Hour(HEntrada)
CFin(1) = 24
Limite(1) = 24
' Segundo ciclo cálculo
CIni(2) = 0
CFin(2) = Hour(HSalida)
Limite(2) = 23
NCiclos = 2
End If
'
'Calcula las horas para todos los tipos de horas
For Ciclo = 1 To NCiclos
'Recorre el día
For i = 0 To Limite(NCiclos)
' Si la hora del día está dentro del rango de horas trabajadas
If i >= CIni(Ciclo) And i < CFin(Ciclo) Then
' Incrementa una hora en la Suma Todas las horas
TipoHoras(0, 1) = TipoHoras(0, 1) + 1
' Localiza el tipo de hora, normal o nocturna
For j = 1 To 4
If HorasDiaTipo(i) = TipoHoras(j, 0) Then
'Controla suma de horas Normales y Nocturnas si >= 8
If (TipoHoras(1, 1) + TipoHoras(3, 1)) >= HorasNormales Then
'Caso de ser cierto, incrementa el valor de J para asignarlo
' a las del 50%
j = j + 1
End If
'Suma las horas según el tipo detectado
TipoHoras(j, 1) = TipoHoras(j, 1) + 1
Exit For
End If
Next j
End If
If i >= CFin(Ciclo) Then Exit For
Next i
Next Ciclo
'
'Localiza las horas según el tipo solicitado
For i = 0 To 4
If UCase(QTipoHora) = TipoHoras(i, 0) Then
Exit For
End If
Next i
'Transfiere las horas del tipo indicado a la función
HorasTrabajo = TipoHoras(i, 1)
End Function
-----------fin del código-------------------
Es posible que algunas líneas queden en dos o más líneas en el post. Tened en cuenta esto por si aparece algún error.

Saludos a todos.
José Luis
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DESAFIO:Formula para horas personal

Publicado por FERNANDO SORIA (1 intervención) el 21/05/2009 15:23:08
Cuanto de personal necesito por el lapso de 4 meses para la revision de planillas de pago de subsidio xxxxx, teniendo en cuenta que la cantidad de beneficiarios es de 5OO.OOO mes necesito datos de todas las formas (tiemopos, minutos horas, dias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DESAFIO:Formula para horas personal

Publicado por luis mayer (1 intervención) el 09/08/2007 23:48:42
necesito una formula actualizada para calcular el personal de un servicio de alimentacion por plato servido.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:DESAFIO:Formula para horas personal

Publicado por jus (1 intervención) el 05/02/2010 20:16:52
quien crees tu que va ayudarte??? jajaja!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar