Hallo yuc2me,
Dein Beispiel hat mich angeregt und ich wollte das anpassen, um die gesetzlichen Pausen automatisch abziehen zu lassen.
Daher habe ich mich mal im Internet umgesehen und eine Anleitung zu Excel gefunden(Geschrieben von: Marcus Rose, Montag, 29. August 2011 um 16:17 Uhr), die ich umsetzen wollte.
Bedingungen: bei Anwesenheitszeiten
- bis 6 Std. wird keine Pause abgezogen;
- zwischen 6:01 Std. u. 6:29 Std. wird eine Pause entspr. der Zeit, die über die 6 Std. hinausgeht, abgezogen;
- zwischen 6:30 Std. u. 9:30 Std. wird eine Pause von 30 min. abgezogen;
- zwischen 9:31 Std. u. 9:44 Std. wird eine Pause entspr. 30 min. plus der Zeit, die über die 9:30 Std. hinausgeht, abgezogen;
- ab 9:45 Std. wird eine Pause von 45 min. abgezogen.
D2 =REST(C2-B2;1)
E2 =WENN(D2<=6/24;0;WENN(UND(D2>6/24;D2<6,5/24);REST(D2-6/24;1);WENN(UND(D2>=6,5/24;D2<9,5/24);0,5/24;WENN(UND(D2>=9,5/24;D2<9,75/24);0,5/24+REST(D2-9,5/24;1);0,75/24))))
F2 =D2-E2
Ich habe dazu den FormCalc Code entsprechend angepasst:
- var e = Time2Num(TimeField2.editValue,"HH:MM","de_DE") var s = Time2Num(TimeField1.editValue,"HH:MM","de_DE")
if (TimeField2.editValue<>"" and TimeField1.editValue<>"") then
var x = e-s
var y = e-s
if (s>=e) then y = x+(24*3600000) endif
var b = 0
if (y>21600000 and y<=23400000) then b = y-21600000 endif
if (y>23400000) then b = 1800000 endif
if (y-b>34200000 and y-b <= 35100000) then b = (y-34200000) endif
if (y>35100000) then b = 2700000 endif
$.rawValue = (y-b)/3600000
else
$.rawValue = ""
endif
Leider funktioniert es nicht ganz. Nach 6 Stunden klappt es wie gewünscht, aber nach 9:30 Stunden komme ich irgendwie nicht klar. Bei Ende (16:31) und Ende (16:45) darf sich die ausgegebene Arbeitszeit von 9 Std. nicht verändern. Da stimmt leider etwas nicht, aber ich finde den Fehler nicht. Vielleicht kann hier im Forum einer den Fehler ausbügeln?
Man erkennt den Fehler sofort, wenn man in der Datei die 5 Beispiele (7-16:30; 7-16:31; 7-16:45,7-16:46 und 7-17:00) eingibt. Bei den genannten 5 Beispielen müsste die Arbeitszeit wie folgt ausgegeben werden (9; 9; 9; 9,017; 9,25). Für den Zeitraum 16:31 bis 16:45 stimmt etwas an der Berechnung nicht.
Zudem möchte ich in den Feldern zur Zeiteingabe nur Stunden und Minuten angezeigt bekommen, das Feld stellt aber auch Sekunden dar. Wie kann ich das abstellen?
Und zu guter Letzt kann ich bei der Zeiteingabe nicht 7 und Tabulator drücken, sondern muss 07 eintragen. Wie kann ich festlegen, das die Eingabe von 7 zu 07 umgewandelt wird, oder die Eingabe von 730 zu 0730 umgewandelt wird, damit nicht zu oft Fehler bei der Eingabe entstehen?
vg wild@ukk