CALCULAR MEDIA

RICARDO.RAPA 16/05/2011 22:28:17
#374098
Alguém tem algum calculo simples para calcular a media de um total de várias horas somada. (TMA - Tempo médio de Atendimento)

Grato!!!!
PARREIRA 17/05/2011 09:58:57
#374133
Resposta escolhida
Crie uma função que transforme a hora para decimal , faça o calculo e depois crie outra função que passe decimal para hora.
Se precisar eu tenho essas funções.
RICARDO.RAPA 17/05/2011 14:35:22
#374168
Parreira. Teria como me mandar?

Posta ai para quem precisar ja ter acesso a sua informação. Fico no Aguardo...

Grato.
PARREIRA 18/05/2011 08:13:03
#374235
}Como dito.. com essas funçoes você pode trabalhar legal com horas...

Public Function HoraToSeg(ByVal HTS As String) As String
Dim hh As Integer
Dim mm As Integer
Dim ss As Integer
Dim horaatual As Double
[ô]Converte de horas para segundos

[ô]recebe hora no formato hh:mm:ss

If HTS = [Ô][Ô] Then Exit Function

[ô]Pega a hora
hh = Format(mID$(HTS, 1, (Len(HTS) - 6)), [Ô]0#[Ô])
mm = Format(mID$(HTS, (Len(HTS) - 4), 2), [Ô]0#[Ô])
ss = Format(mID$(HTS, (Len(HTS) - 1), 2), [Ô]0#[Ô])

horaatual = hh * 3600#
horaatual = horaatual + (mm * 60#) + ss

HoraToSeg = CStr(horaatual)
End Function

Public Function SegToHora(ByVal STH As String) As String
Dim Hora As Double
Dim Minutos As Double
Dim Valor As Double
Dim Segundos As String
If IsNumeric(STH) = False Then Exit Function
Valor = CDbl(STH)
[ô]Transforma valor em hh:mm:ss
Hora = Format$((Valor \ 3600), [Ô]0#[Ô])
Minutos = Format$(((Valor Mod 3600) \ 60), [Ô]0#[Ô])
Segundos = Format$(((Valor Mod 3600) Mod 60), [Ô]0#[Ô])

SegToHora = Format$(Hora, [Ô]0#[Ô]) & [Ô]:[Ô] & Format$(Minutos, [Ô]0#[Ô]) & [Ô]:[Ô] & Format$(Segundos, [Ô]0#[Ô])
End Function

Public Function HoraToDecimal(ByVal sHora As String) As Single
Dim Horas As Integer
Dim Mins As Integer
Dim Segs As Integer

sHora = Format$(sHora, [Ô]HH:MM:SS[Ô])
If IsNull(sHora) Then
HoraToDecimal = 0
Exit Function
End If

Horas = Val(Left$(sHora, 2))
Mins = Val(mID$(sHora, 4, 2))
Segs = Val(Right$(sHora, 2))

HoraToDecimal = Horas + (Mins / 60) + (Segs / 3600)
End Function

Public Function DecimalToHora(nrHora As Double)
Dim Horas As Integer
Dim Mins As Integer

Horas = Int(nrHora)
Mins = (nrHora - Horas) * 60

If Mins = 60 Then
Horas = Horas + 1
Mins = 0
End If

DecimalToHora = IIf(Horas < 10, [Ô]0[Ô] & Horas, Horas) & [Ô]:[Ô] & IIf(Mins < 10, [Ô]0[Ô] & Mins, Mins)
End Function
RICARDO.RAPA 19/05/2011 11:19:31
#374380
Valeu Cara!! Muito bom! Vou resolver aqui.
Tópico encerrado , respostas não são mais permitidas