Hallo Phil,
grundsätzlich gibt es auch eine Formellösung über Addition von mehreren SUMMENPRODUKT-Ausdrucken.
Alternativ eine etwas langsamere benutzerdefinierte VBA-Funktion, die in der Zelle etwas übersichtlicher ist. Die Function muss in ein allgemeines Modul der Datei eingefügt werden.
Gruß
Franz
Beispiel-Daten
Tabellenblattname: Zeiten
A B C D
1 Startdatum Startzeit Endedatum Endezeit
2 01.01.2010 08:00 01.01.2010 19:00
3 02.01.2010 09:00 03.01.2010 20:00
4 05.01.2010 08:00 17.01.2010 08:00
5 13.01.2010 08:30 14.01.2010 11:45
Tabellenblattname: Summen
A B C D E F G H
1 Zeit Zeit Zeit Zeit Function Function
2 Datum 1. Tag 24 h letzter Tag Summe Formel hh:mm Dezi
3 01.01.2010 11:00 0:00 0:00 11:00 11:00 11:00 11,00
4 02.01.2010 15:00 0:00 0:00 15:00 15:00 15:00 15,00
5 03.01.2010 0:00 0:00 20:00 20:00 20:00 20:00 20,00
6 04.01.2010 0:00 0:00 0:00 0:00 0:00 0:00 0,00
7 05.01.2010 16:00 0:00 0:00 16:00 16:00 16:00 16,00
8 06.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
9 07.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
10 08.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
11 09.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
12 10.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
13 11.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
14 12.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
15 13.01.2010 15:30 24:00 0:00 39:30 39:30 39:30 39,50
16 14.01.2010 0:00 24:00 11:45 35:45 35:45 35:45 35,75
17 15.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
18 16.01.2010 0:00 24:00 0:00 24:00 24:00 24:00 24,00
19 17.01.2010 0:00 0:00 8:00 8:00 8:00 8:00 8,00
20 18.01.2010 0:00 0:00 0:00 0:00 0:00 0:00 0,00
Benutzte Formeln:
B3: =SUMMENPRODUKT((A3=Start.Datum)\*(A3=Ende.Datum)\*(Ende.Zeit-Start.Zeit))
+SUMMENPRODUKT((A3=Start.Datum)\*(A3Start.Datum)\*(A3Start.Datum)\*(A3=Ende.Datum)\*(Ende.Zeit))
D20: =SUMMENPRODUKT((A20\>Start.Datum)\*(A20=Ende.Datum)\*(Ende.Zeit))
E3: =SUMME(B3:smiley:3)
F3: =SUMMENPRODUKT((A3=Start.Datum)\*(A3=Ende.Datum)\*(Ende.Zeit-Start.Zeit))
+SUMMENPRODUKT((A3=Start.Datum)\*(A3Start.Datum)\*(A3Start.Datum)\*(A3=Ende.Datum)\*(Ende.Zeit))
G3: =ZeitSumme(A3;Start.Datum;Start.Zeit;Ende.Datum;Ende.Zeit)
H3: =ZeitSumme(A3;Start.Datum;Start.Zeit;Ende.Datum;Ende.Zeit;WAHR)
Namen in der Datei:
Ende.Datum : =Zeiten!$C$2:blush:C$7
Ende.Zeit : =Zeiten!$D$2:blush:D$7
Start.Datum : =Zeiten!$A$2:blush:A$7
Start.Zeit : =Zeiten!$B$2:blush:B$7
Benutzerdefinierte Funktion:
Function ZeitSumme(Datum As Date, StartDatum As Range, StartZeit As Range, \_
EndeDatum As Range, EndeZeit As Range, Optional Stunden As Boolean = False) As Double
'folgende Formel umgesetzt in benutzerdefinierte VBA-Function
'es werden die auf den jeweiligen Kalendertag entfallenden Stunden berechnet
' =SUMMENPRODUKT((A2=Start.Datum)\*(A2=Ende.Datum)\*(Ende.Zeit-Start.Zeit)) \_
+SUMMENPRODUKT((A2=Start.Datum)\*(A2Start.Datum)\*(A2Start.Datum)\*(A2=Ende.Datum)\*(Ende.Zeit))
Dim Zeile As Long
For Zeile = 1 To StartDatum.Rows.Count
'Anteil 1. Tag, Anfang und Ende am gleichen Tag
ZeitSumme = ZeitSumme + IIf((Datum = StartDatum(Zeile, 1)) \_
\* (Datum = EndeDatum(Zeile, 1)), EndeZeit(Zeile, 1) - StartZeit(Zeile, 1), 0)
'Anteil 1. Tag, Anfang und Ende sind verschieden Tag
ZeitSumme = ZeitSumme + IIf((Datum = StartDatum(Zeile, 1)) \_
\* (Datum StartDatum(Zeile, 1)) \_
\* (Datum StartDatum(Zeile, 1)) \_
\* (Datum = EndeDatum(Zeile, 1)), EndeZeit(Zeile, 1), 0)
Next
If Stunden = True Then ZeitSumme = ZeitSumme \* 24
End Function