PDA

Vollständige Version anzeigen : Berechnung negaitver Uhrzeit


Achim
16.07.2001, 10:55
Hallo
Ich habe folgendes Problem:
Für die Berechnung der Gleitzeit möchte ich wissen, an welchen Tagen ich meine Sollarbeitszeit erfüllt hab oder nicht.
In den Zellen D und E wird jeweils Anfangs- bzw. Endzeit eingegeben. In der Zelle H die Sollarbeitszeit und in Zelle I die Berechung der Istarbeitszeit. Bis dahin soweit klar. Nun soll in Zelle J die Differenz Soll/Ist ausgegeben werden. Das Problem ist nun, dass nur positive Differnzergebnisse ausgegeben werden. Alle Ein- und Ausgaben sollen im Uhrzeitformat erfolgen. Dank im voraus für Ihre Hilfe.

O-Schreiner
16.07.2001, 11:15
Hallo Achim,

also wenn die Formatierung mit aller Gewalt in Uhrzeit sein muss, dann hast Du meiner Ansicht nach ziemlich schlechte Karten. Soviel ich weiss gibts es keine Möglichkeit eine negative Uhrzeit zu formatieren. (haste mal minus drei Minuten Zeit? :))

Einzige Möglichkeit ist es, die Sollarbeits-Zeit, die Ist-Arbeitszeit und die errechnete Differenzu als "Dezimalstunden" abzubilden und anzuzeigen.

Dazu musst Du einfach alle Uhrzeiten mal 24 nehmen und dann erst verrechnen:

D1: 08:13
E1: 16:01
H1: 8,0
I1: =(E1-D1)*24 (7,80)
J1: =I1-H1 (-0,20) also fast ne Viertelstunde (0,25) zuwenig gearbeitet.

HTH cu, Olly

<font size="1" face="Century Gothic">Moderatorenanmerkung: die Überarbeitung dieses Beitrages ist im Zuge der Arbeiten zu sehen, die durch den Wechsel der Forensoftware zum 01.01.2003 verursacht wurden.

Es wurden in diesem Beitrag Links korrigiert, die auf falsche Adressen zeigten...</font>

Pepi
16.07.2001, 14:11
Versuch's mal mit Extras/Optionen/Berechnen/1904 Datumswerte
Das sollte dann eigentlich gehen. Und wenn du dann noch die Formatierung auf [h]:mm setzt... perfekt.
Gruß, Matthias

Achim
16.07.2001, 16:41
Ich bedanke mich für den Beitrag. Es hat funnktioniert.
Der Admin kann dieses Thema löschen.
Vielen Dank nochmal

poltergeist
08.12.2003, 18:02
hi :)

das ist einfach

von der aktiven zelle ausgehend ist dier zweite linksliegende zelle die sollzeit,die erst linksliegende die ist zeit,in der aktiven wird die zeitdifferenz ausgegeben
mit minuszeichen.

gruss und kussl

Sub Makro1()
On Error GoTo fehler
adress$ = ActiveWindow.RangeSelection.Address
adress1 = Len(adress$)
For mo = 1 To adress1
If Mid$(adress, mo, 1) = "$" Then
llp = llp + 1
Else
If llp = 1 Then
spalte$ = spalte$ + Mid$(adress, mo, 1)
End If
If llp = 2 Then
zeile$ = zeile$ + Mid$(adress, mo, 1)
zeile1 = Val(zeile$)
End If
End If
Next mo
b0 = Asc(spalte$)
Range(Chr$(b0) & zeile1) = ""
b0 = b0 - 2
GoSub modul1
c4 = c333
b0 = b0 + 1
GoSub modul1
b0 = b0 + 1
If c4 > c333 Then c5 = c4 - c333
If c333 > c4 Then c5 = c333 - c4
c6 = c5
Do
If c6 < 60 Then
Exit Do
Else
b = b + 1
c6 = c6 - 60
End If
Loop
b1$ = Str(b)
If Mid$(b1$, 1, 1) = " " Or Mid$(b1$, 1, 1) = "-" Then b1$ = Mid$(b1$, 2, Len(b1$))
b2$ = Str(c6)
If Mid$(b2$, 1, 1) = " " Or Mid$(b2$, 1, 1) = "-" Then b2$ = Mid$(b2$, 2, Len(b2$))
a23$ = b1$ + "." + b2$
a24 = Val(a23$)
If Len(b2$) = 1 Then b2$ = "0" + b2$
If Range(Chr$(b0 - 1) & zeile1) > Range(Chr$(b0 - 2) & zeile1) Then Range(Chr$(b0) & zeile1) = "+" + b1$ + "." + b2$
If Range(Chr$(b0 - 1) & zeile1) < Range(Chr$(b0 - 2) & zeile1) Then Range(Chr$(b0) & zeile1) = "-" + b1$ + "." + b2$
End
modul1:
laenge = Len(Range(Chr$(b0) & zeile1))
If Mid$(Range(Chr$(b0) & zeile1), 1, 1) = " " Then Range(Chr$(b0) & zeile1) = Mid$(Range(Chr$(b0) & zeile1), 2, laenge - 1)
laenge = Len(Range(Chr$(b0) & zeile1))
For t = 1 To laenge
If Mid$(Range(Chr$(b0) & zeile1), t, 1) = "," Then
c1$ = Mid$(Range(Chr$(b0) & zeile1), 1, t - 1)
c11 = Val(c1$)
c111 = c11 * 60
c2$ = Mid$(Range(Chr$(b0) & zeile1), t + 1, laenge)
c22 = Val(c2$)
c333 = c111 + c22
t = laenge + 1
zr = 1
End If
Next t
If zr = 0 Then
c1 = Val(Range(Chr$(b0) & zeile1))
c333 = c1 * 60
End If
zr = 0
Return
fehler:
End Sub