Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1452to1456
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Tage:Stunde:Minuten:Sekunden addieren

Tage:Stunde:Minuten:Sekunden addieren
15.10.2015 13:18:42
Lubeca
Hallo zusammen,
ich muss aus einer Tabelle Zeitwerte auslesen, addieren und das Ergebnis in eine neue Tabelle kopieren.
Die Zeiten stehen aber leider in folgenden Format: dd:hh:mm:ss Übersetzt: Tage:Stunden:Minuten:Sekunden bzw. einige Daten sind nur in hh:mm:ss vorhanden.
Die Daten in hh:ss:mm kann ich über =Summe(A1+A2+A3+...)addieren. Doch steht in einer Zelle der Zeitwert im anderen Format, kann Excel damit nicht umgehen.
Ich habe es mit der Formatierung der Zelle in T:hh:mm:ss versucht, doch auch das will nicht funktionieren. Ist die oben genannte Summe größer als ein Tag und ich das Format T:hh:mm:ss einstelle, funktioniert weiteres Addieren nicht mehr.
Hat jemand eine Idee, wie ich das Auslesen des Zeitwertes und das Addieren mit VBA umsetzen kann, so dass alle Zeitwerte richtig addiert werden?
Hier mal ein paar dieser Zeitwerte die addiert werden müssen:

  • 00:01:53
    1:06:04:34
    22:01:03
    21:36:33
    14:04:47
    00:00:00
    1:06:16:32
    05:37:09
    2:19:23:18
    2:19:50:57
    1:22:36:54
    1:17:35:30
    22:18:00
    1:09:22:19
    01:35:01
    1:09:29:41
    03:26:30
    1:04:35:49
    19:16:29
    09:37:27
    2:09:52:04
    17:55:51
    18:46:40
    1:18:50:18
    2:00:50:21
    02:45:57
    09:40:44
    2:19:44:01
    2:01:14:23
    1:11:30:06
    1:04:03:50
    1:09:41:21
    08:10:57
    09:09:40
    00:57:01
    02:33:56

  • Danke schon mal.
    Lubeca

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

    Betreff
    Datum
    Anwender
    Anzeige
    AW: Tage:Stunde:Minuten:Sekunden addieren
    15.10.2015 13:35:41
    selli
    hallo lubeca,
    solange die tage einstellig bleiben, schreibe die formel in eine hilfspalte und ziehe sie runter
    jetzt kannst du mit den werten rechnen.
    =WENN(ISTZAHL(A1);A1;WERT(RECHTS(A1;8)+LINKS(A1;1)))
    gruß
    selli

    AW: Tage:Stunde:Minuten:Sekunden addieren
    15.10.2015 13:48:56
    selli
    hallo lubeca,
    so wäre die Anzahl der tage egal:
    =WENN(ISTZAHL(A2);A2;WERT(RECHTS(A2;8)+LINKS(A2;FINDEN(":";A2)-1)))
    gruß
    selli

    AW: Tage:Stunde:Minuten:Sekunden addieren
    17.10.2015 14:49:17
    Lubeca
    Hallo selli,
    ich habe beide Formeln ausprobiert, doch ich bekomme beim Erstellen der Summe nicht die richtige Anzahl an Stunden raus.
    Addiere ich die Zeiten händisch bekomme ich 38 Tage raus. Das müssten 912 Stunden sein, plus die restlichen 20 Stunde ergibt sich 932 Stunden insgesamt. Deine erste Formel bekommt als Summe (=Summe(A1:A35)) 5276 Stunden raus und bei Deiner zweiten Formel habe ich 1172 Stunden.
    Problem ist auch noch, dass ich keine Berechtigung habe in der Quelldatei etwas zu ändern. Ich kann nur die Zahlen auslesen. Die Datei ist von einem anderen Programm exportiert, darum sehen diese Werte ja aus wie Zeiten, die Zellen sind aber als Standard formatiert und habe kein richtiges Zeitformat. Beim Auslesen mittels VBA in eine Variable wird ein String erkannt. Ich habe jetzt schon eine Funktion geschrieben, in der ich diese Formel auslese, die Tage in Stunden umwandeln und mit den restlichen Stunden addiere, wieder mit den Minuten und Sekunden zusammenfüge und diese zurückgeben. Aber jetzt ist es definitiv ein String. Einen String kann ich nicht mehr addieren.
    In VBA gibt es anscheinend auch nicht das Format über 24 Stunden, somit kommt ein umwandeln des Strings in Date oder so nicht in Frage. Die Zwischenspeicherung in einer neuen Zelle würde ich gerne vermeiden, da ich nur in der neuen Datei schreiben kann und diese Zellen dann auch wieder löschen müsste. Ich wollte den Quellcode so kurz wie möglich halten.
    Hat noch jemand eine Idee für eine Lösung.
    Tschüßi Lubeca

    Anzeige
    AW: hier nur eine echten MATRIXformel ...
    17.10.2015 16:47:23
    ...
    Hallo Lubeca,
    ... angenommen, Deine Datenwerte stehen in Spalte 2 ab Zeile2 und es stehen keine sonstigen Textwerte im auszuwertenden Bereich (dann verlängert sich die Formel noch etwas) und Du formatierst die Ergebniszelle (hier E1) mit benutzerdefinierten Zahlenformat [h]:mm:ss so, dann für Deine hier angegebenen Daten so:
     E
    1932:37:36

    Formeln der Tabelle
    ZelleFormel
    E1{=SUMME(WENN(ISTFEHL(--A2:A99);(TEIL(A2:A99;FINDEN(":";A2:A99)+1;19)+LINKS(A2:A99;FINDEN(":";A2:A99)-1)))+WENN(ISTZAHL(--A2:A99); A2:A99))}
    Enthält Matrixformel:
    Umrandende
    { } nicht miteingeben,
    sondern Formel mit STRG+SHIFT+RETURN abschließen!
    Matrix verstehen

    Gruß Werner
    .. , - ...

    Anzeige
    AW: Schreibfehler, nicht Spalte 2 sondern A! owT
    17.10.2015 16:50:30
    ...
    Gruß Werner
    .. , - ...

    AW: hier nur eine echten MATRIXformel ...
    19.10.2015 12:28:41
    Lubeca
    Hallo Werner,
    Deine Formel funktioniert in Excel. Doch ich muss ja die Werte per VBA zusammenrechnen und in eine andere Excel Datei kopieren.
    Ich suche eine Lösung auf Basis von VBA.
    Es müssen auch nicht alle Daten Übernommen werden. Anhand was in meiner Tabelle in Spalte A steht, speichere ich die Zeilennummer in einem Array. In dem Array stehen dann die Zeilennummern von denen ich die Spalte D zusammenrechnen muss.
    Mein erste Ansatz war so:
    
    Ergebnis = 0
    'Spalte 4 für alle Namen Addieren
    For Zaehler1 = 0 To UBound(VarArr2)
    Zeile = CInt(VarArr2(Zaehler1, 1))    ' Auslesen der Zeilen
    Ergebnis = Ergebnis + Workbooks(Mappe1).Sheets(1).Cells(Zeile, 4).Value
    Next
    .Range("F7").Value = Ergebnis
    
    Dieses funktionierte auch solange in der Spalte der Text im [h]:mm:ss -Format war.
    Jetzt, in einer neuen Quelldatei, sind die Zeitwerte aber größer und im T:hh:mm:ss -Format
    Das Umrechnen habe ich in folgender Funktion ausprobiert:
    
    Function Umrechnen(VarZelle As Range) As String
    Dim VarZeit As String
    Dim VarStunde As Integer
    Dim VarZeitneu As String
    If VarZeit = Format(VarZeit, "?:?:?:?") Then
    VarStunde = (CInt(Left(VarZeit, 1)) * 24) + CInt(Left(Right(VarZeit, 8), 2))
    VarZeitneu = CStr(VarStunde) & Right(VarZeit, 6)
    Else
    VarZeitneu = VarZeit
    End If
    Umrechnen = VarZeitneu
    End Function
    

    Nur ich gebe hier einen String zurück und bekomme die richtige Zahl nicht in das Date Format, mit dem ich addieren kann. Ich müsste in der Funktion zum Umrechnen keinen String sondern den richtigen Doublewert zurückgeben.
    Hat jemand eine Idee, wie ich in meiner Funktion den Stringwert vor der Rückgabe in den korrekten Doublewert umrechne?
    Tschüßi Lubeca

    Anzeige
    AW: nun Realisierung in VBA gesucht ...
    19.10.2015 12:34:40
    ...
    Hallo Lubeca,
    ... doch aus VBA-Lösungsangeboten halte ich mich heraus. Deshalb habe ich den thread für Dich gleich wieder auf offen gestellt.
    Gruß Werner
    .. , - ...

    AW: nun Realisierung in VBA gesucht ...
    19.10.2015 14:07:24
    Lubeca
    Ja danke.
    Ich hatte schon immer die Umsetzung mit VBA gesucht, wie Du im ersten Post lesen kannst.

    "Hat jemand eine Idee, wie ich das Auslesen des Zeitwertes und das Addieren mit VBA umsetzen kann, so dass alle Zeitwerte richtig addiert werden?"

    Jetzt suche ich eine Möglichkeit meinen Zeitwert im Format [h]:mm:ss von String in Double umzuwandeln.
    CDate, TimeSerial und TimeValue gehen nicht, da über 24 Stunden vorhanden sind.
    Hat jemand eine VBA Idee? Ohne Zwischenspeichern in einer Zelle!
    Tschüßi Lubeca

    Anzeige

    307 Forumthreads zu ähnlichen Themen

    Anzeige
    Anzeige
    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige

    Beliebteste Forumthreads (12 Monate)

    Anzeige
    Anzeige
    Anzeige