Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeitspanne innerhalb einer Zelle berechnen

Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 16:03:56
Flexi
Hallo zusammen und ein frohes Neues,
ich möchte eine Art "Zeiterfassungsmatrix" umsetzen.
In einer Zelle steht beispielsweise:
"T1000-1030
W1030-1200
B1200-1230
W1230-1400
T1400-1430"
T steht hierbei für Travel - Reisezeit,
W steht für Work - Arbeitszeit.
B steht für Break - Pausenzeit.
"1000-1030" soll bedeuten 10:00 Uhr bis 10:30 Uhr.
Es werden noch weitere Abkürzungen, für andere "Zeitkonten" hinzukommen.
Auch könnte die Zeiterfassung noch umfangreicher sein. Das einzige "Pattern" welches immer besteht soll sein:
X####-####
Aus der Zelle benötige ich folgende Infos:
- Gesamtzeit
- Zeit aufgeschlüsselt nach Konto
Habt ihr eine Idee, wie ich das umsetzen könnte und ist der Sachverhalt verständlich?
Vielen Dank im Voraus.
Grüße
Flexi

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 16:09:32
onur
Und wieso nicht DREI Spalten statt nur einer?
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 16:18:17
Flexi
Hallo Onur,
Danke schonmal für die Antwort.
3 Spalten wäre für die Übersichtlichkeit der Matrix eher schlecht.
Jedoch wüsste ich da auch wieder nicht, wie ich die Berechnung der Konten anstellen sollte.
Es könnte halt einen Tag, wie oben im Beispiel aussehen, andere Tage könnten jedoch wieder sehr unterschiedlich aussehen. Hier nochmal 2 Beispiele:
"T0800-0830
W0830-1000
T1000-1030"
"W0900-1200
B1200-1230
W1230-1330
T1330-1400
W1400-1500
T1500-1530"
Ich hoffe aus den 2 Beispielen wird mein Sachverhalt noch etwas klarer.
Anzeige
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 16:51:47
fcs
Hallo Flexi,
das lässt sich nach meiner Einschätzung übersichtlich nur mit einer benutzerdefinierten VBA-Funktion lösen.
LG Franz
Tabelle1

 ABCDE
1 Gesamt-ZeitTWB
2T1000-1030
W1030-1200
B1200-1230
W1230-1400
T1400-1430
4:301:003:000:30

Formeln der Tabelle
ZelleFormel
B2=fncZeitGesamt(A2)
C2=fncZeitKonto($A2;C$1)
D2=fncZeitKonto($A2;D$1)
E2=fncZeitKonto($A2;E$1)


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4.8
'benutzerdefinierte Funktionen in einem allgemeinen VBA-Modul der Datei Function fncZeitGesamt(sText) As Variant Dim arrKonto Dim sZeit1 As String, sZeit2 As String Dim datZeit1 As Date, datZeit2 As Date If sText = "" Then fncZeitGesamt = 0 Else arrKonto = VBA.Split(sText, Chr(10)) sZeit1 = Mid(arrKonto(LBound(arrKonto)), 2, 4) datZeit1 = TimeSerial(Val(VBA.Left(sZeit1, 2)), Val(Right(sZeit1, 2)), 0) sZeit2 = Right(arrKonto(UBound(arrKonto)), 4) datZeit2 = TimeSerial(Val(VBA.Left(sZeit2, 2)), Val(Right(sZeit2, 2)), 0) If datZeit2 >= datZeit1 Then fncZeitGesamt = datZeit2 - datZeit1 Else fncZeitGesamt = 1 + datZeit2 - datZeit1 End If End If End Function Function fncZeitKonto(sText As String, sKonto As String) As Variant Dim intJ As Integer, arrKonto Dim sZeit1 As String, sZeit2 As String Dim datZeit1 As Date, datZeit2 As Date Dim datKonto As Date If sText = "" Then fncZeitKonto = 0 Else datKonto = 0 arrKonto = VBA.Split(sText, Chr(10)) For intJ = LBound(arrKonto) To UBound(arrKonto) If sKonto = Left(arrKonto(intJ), 1) Then sZeit1 = Mid(arrKonto(intJ), 2, 4) datZeit1 = TimeSerial(Val(VBA.Left(sZeit1, 2)), Val(Right(sZeit1, 2)), 0) sZeit2 = Right(arrKonto(intJ), 4) datZeit2 = TimeSerial(Val(VBA.Left(sZeit2, 2)), Val(Right(sZeit2, 2)), 0) If datZeit2 >= datZeit1 Then datKonto = datKonto + (datZeit2 - datZeit1) Else datKonto = datKonto + (1 + datZeit2 - datZeit1) End If End If Next fncZeitKonto = datKonto End If End Function
Anzeige
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 17:11:06
Flexi
Hallo Franz,
vielen lieben Dank. Das scheint es zu sein.
Bei mir funktioniert die Berechnung nur leider noch nicht ganz richtig, wenn z.b. nur eine Zeit da steht ("T1000-1030"), gibt die Formel 14 Stunden aus.
Ich probiere mal selber noch ein bisschen rum und versuche das VBA zu verstehen.
Vielen vielen Dank nochmal.
Grüße
Flexi
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 18:22:46
fcs
Hallo Flexi,
die falsche Berechnung tritt auf, wenn am Ende des Zellinhalts Zeilenschaltungen vorhanden sind.
Dann ermittelt meine Function aus einem Leerstring "" die Ende-Zeit datZeit2 als 00:00:00 Uhr und die Zeitdifferenz 24:00:00 - Startzeit als Gesamtarbeitszeit.
Ich hab die Function jetzt etwas angpasst, so dass leere Zeilen ignoriert werden.
LG
Franz
Function fncZeitGesamt(sText) As Variant
Dim intJ As Integer, arrKonto
Dim sZeit1 As String, sZeit2 As String
Dim datZeit1 As Date, datZeit2 As Date
If sText = "" Then
fncZeitGesamt = 0
Else
arrKonto = VBA.Split(sText, Chr(10))
sZeit1 = Mid(arrKonto(LBound(arrKonto)), 2, 4)
datZeit1 = TimeSerial(Val(VBA.Left(sZeit1, 2)), Val(Right(sZeit1, 2)), 0)
For intJ = LBound(arrKonto) To UBound(arrKonto)
If Trim(arrKonto(intJ))  "" Then
sZeit2 = Right(arrKonto(intJ), 4)
End If
Next
datZeit2 = TimeSerial(Val(VBA.Left(sZeit2, 2)), Val(Right(sZeit2, 2)), 0)
If datZeit2 >= datZeit1 Then
fncZeitGesamt = datZeit2 - datZeit1
Else
fncZeitGesamt = 1 + datZeit2 - datZeit1
End If
End If
End Function

Anzeige
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 19:13:20
Günther
Moin Flexi,
ich gehe davon aus, dass es sich (mit korrekten Ergebnissen) mit Power Query lösen lässt.
Gruß
Günther
AW: Zeitspanne innerhalb einer Zelle berechnen
02.01.2019 19:28:01
onur
Du solltest auch mal ALLE Antworten lesen, die man dir netterweise schickt!!!
AW: Zeitspanne innerhalb einer Zelle berechnen
03.01.2019 09:13:39
Flexi
Guten Morgen zusammen und vielen lieben Dank für die Antworten.
Die Antworten von Franz waren genau, was ich gesucht habe.
@Günther: Wie kann ich mir das mit Power Query vorstellen? Leider habe ich damit noch nicht gearbeitet.
@Onur: Vielen Dank für Deine Antwort, die ich tatsächlich übersehen habe. Jedoch führte dies nicht zur Lösung, da ich die Strings nicht in mehrer Zellen verteilen möchte. Es ist ja nicht vorhersehbar, wie viele Zeilen ich dann bekäme.
Danke nochmal an alle für die Bemühungen.
Ich werde dann mal mit dem VBA arbeiten und den Code erstmal versuchen zu verstehen. Danke
Grüße
Flexi
Anzeige

317 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige