Time Overlap

Bild

Betrifft: Time Overlap
von: Marc
Geschrieben am: 26.04.2005 12:18:01
Hallo. Ich hab folgendes Problem zu lösen und seh noch keinen praktischen Ausweg:
Ich möchte berechnen, um wieviele Stunden sich zwei Zeitbereiche überlappen, wobei der 1. Bereich einen fixen Corridor darstellt (i.e. 23:00h bis 6:00h - 'Nachtarbeit'), der 2. Bereich ein beliebiger Zeitraum (effektive Arbeitszeit eines Mitarbeiters) ist, der mit dem 1. Bereich vollständig, teilweise (am Anfang oder am Schluss) oder aber auch gar nicht überlappen kann.
Bsp.:
..........Start....Stop....Overlap
Korridor:.23:00....06:00
MA 1:.....07:45....14:30...0.0
MA 2: 14:10 24:00 1.0
MA 3: 23:30 05:20 5.83
MA 4: 03:30 11:20 2.5
MA 5: 22:00 07:00 7.0
Könnt Ihr mir da weiterhelfen? - Herzlichen Dank! - marc

Bild

Betrifft: AW: Time Overlap
von: Herbert
Geschrieben am: 26.04.2005 12:29:22
Hallo Marc,
das ist die Lösung deines Problems
 
 ABCDE
1Nachtschicht:BeginnEnde  
2 23:0006:00  
3     
4Arbeitszeit:    
5BeginnEndeGesamtdavon Nacht-Std.Ind.-Std. Nacht
607:4514:3006:4500:000,00
714:1000:0009:5001:001,00
823:3005:2005:5005:505,83
903:3011:2007:5002:302,50
1022:0007:0009:0007:007,00
Formeln der Tabelle
C6 : =REST(B6-A6;1)
D6 : =MAX(;MIN(B6+(A6>B6);MAX((B$2>C$2);C$2))-MAX(A6;B$2))+MAX(;MIN(B6;MAX((B$2>C$2);C$2))-MAX(;B$2))*(A6>B6)+MAX(;MIN(B6+(A6>B6);MIN((B$2>C$2);C$2))-MAX(A6;))+MIN(B6;MIN((B$2>C$2);C$2))*(A6>B6)
E6 : =D6*24
C7 : =REST(B7-A7;1)
D7 : =MAX(;MIN(B7+(A7>B7);MAX((B$2>C$2);C$2))-MAX(A7;B$2))+MAX(;MIN(B7;MAX((B$2>C$2);C$2))-MAX(;B$2))*(A7>B7)+MAX(;MIN(B7+(A7>B7);MIN((B$2>C$2);C$2))-MAX(A7;))+MIN(B7;MIN((B$2>C$2);C$2))*(A7>B7)
E7 : =D7*24
C8 : =REST(B8-A8;1)
D8 : =MAX(;MIN(B8+(A8>B8);MAX((B$2>C$2);C$2))-MAX(A8;B$2))+MAX(;MIN(B8;MAX((B$2>C$2);C$2))-MAX(;B$2))*(A8>B8)+MAX(;MIN(B8+(A8>B8);MIN((B$2>C$2);C$2))-MAX(A8;))+MIN(B8;MIN((B$2>C$2);C$2))*(A8>B8)
E8 : =D8*24
C9 : =REST(B9-A9;1)
D9 : =MAX(;MIN(B9+(A9>B9);MAX((B$2>C$2);C$2))-MAX(A9;B$2))+MAX(;MIN(B9;MAX((B$2>C$2);C$2))-MAX(;B$2))*(A9>B9)+MAX(;MIN(B9+(A9>B9);MIN((B$2>C$2);C$2))-MAX(A9;))+MIN(B9;MIN((B$2>C$2);C$2))*(A9>B9)
E9 : =D9*24
C10 : =REST(B10-A10;1)
D10 : =MAX(;MIN(B10+(A10>B10);MAX((B$2>C$2);C$2))-MAX(A10;B$2))+MAX(;MIN(B10;MAX((B$2>C$2);C$2))-MAX(;B$2))*(A10>B10)+MAX(;MIN(B10+(A10>B10);MIN((B$2>C$2);C$2))-MAX(A10;))+MIN(B10;MIN((B$2>C$2);C$2))*(A10>B10)
E10 : =D10*24
 


Gruß Herbert
Bild

Betrifft: AW: Time Overlap
von: Marc
Geschrieben am: 27.04.2005 10:53:34
Herzlichen Dank für die super schnelle Antwort (die ich leider erst heute gesehen habe)! In der Zwischenzeit hab ich auch schon eine eigene Lösung gefunden, die ganz anders aussieht - falls es dich interessiert:
Overlap = AboveZero(B-a) - AboveZero(B-b) - AboveZero(A-a); where [A, B] is the actual working time, [a, b] is the corridor, and AboveZero is a Routine defined as:

Function AboveZero(Int1 As Integer) As Integer
    AboveZero = Int1 / 2 + Abs(Int1) / 2
End Function

Liebe Grüsse und nochmals herzlichen Dank! marc
 Bild

Beiträge aus den Excel-Beispielen zum Thema "Verzeichnis einlesen / darstellen"