Anzeige
Archiv - Navigation
1016to1020
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
Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 21:37:28
Steffan
Hallo ihr Lieben und ein freundliches Guten Abend in die Runde,
in meiner Tabelle rechne ich in einer Zelle mit der Formel SUMME(E2:E500) Minuten zusammen. Die Spalte E ist so formatiert: [h]:mm
Das Ergebnis liegt im Format TT:hh:mm vor. Ich will also Tage:Stunden:Minuten angezeigt bekommen. Das funktioniert auch gut.
Nun habe ich eine UF erstellt, in der die Ergebnisse der Berechnungen in Textboxen ausgegeben werden. Und zwar nach folgender Formel:
TextBox5 = WorksheetFunction.SumIf(Range("E2:E500"), ">0") + 1 ~f~ 'Summe Zeit
TextBox5 = Format(Format(TextBox5.Value), "dd:hh:mm")
Wie ihr seht, muss ich die 1 addieren, um das korekte Ergebnis zu erhalten. Warum ist das so?
In einer anderen Textbox gebe ich die Durchschnittszeit nach folgender Formel aus:
~f~ TextBox13 = (WorksheetFunction.SumIf(Range("E2:E500"), ">0")) / _
WorksheetFunction.CountIf(Range("E2:E500"), ">0") 'durchschnittliche Zeit
TextBox13 = Format(Format(TextBox13.Value), "h:mm")
Hier muss ich die 1 nicht addieren.
Habe ich jetzt einen Denk- oder einen Rechenfehler gemacht?
Einen lieben Gruß,
Steffan

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 22:22:00
Ramses
Hallo
Vielleicht eine blöde Frage:
Aber warum verwendest du in der UF "SumIf" und in der Tabelle "Summe" ?
Zähl doch einfach zusammen mit "Sum(Range("E2:E500"))"
Ausserdem kannst du das ganze abkürzen
TextBox5 = Format(Worksheetfunction.Sum(Range("E2:E500")), "dd:hh:mm")
Warum das nun mit der 1 so ist, kann ich dir auch nicht sagen. Ist mir auch neu, dass VBA hier Probleme hat.
Muss ich auch erst mal nachsehen.
Aber das ist wohl in der Formatierung zu suchen, da VBA die [] nicht unterstützt.
Umgehen kannst du das entweder mit der "+1" oder mit
Textbox5 = int(worksheetfunction.Sum(Range("A2:A21"))) & ", " format(worksheetfunction.Sum(Range("A2:A21")),"hh:mm")
Das die zweite Rechnung stimmt, ist jedoch korrekt, da hier ja zweimal mit dem falschen Ergebnis gerechnet wird, und der Durchschnitt dann wieder stimmt
Gruss Rainer
Anzeige
AW: Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 23:04:00
Steffan
Hallo Rainer,
es gibt keine blöden Fragen.
Das SumIf resultiert aus meiner Unerfahrenheit mit VBA. Ich habs mir aus dem CountIf abgeleitet. Und deine abgekürzte Version ist viel übersichtlicher und letzlich verständlicher. Dafür schon mal Danke.
Aber deine Erklärung zur zweiten Rechnung versteh ich nicht. Ich rechne doch hier auch nur wieder die Summe aus E2:E500 zusammen und teile sie durch die Anzahl der Einträge. An welcher Stelle gibt es da zwei mal ein falsches Ergebnis, dessen Durchschnitt das Ergebnis wieder "begradigt"?
Gruß Steffan
AW: Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 22:48:00
Sigi
Hi Steffan,
das mit dem "+1" ist so ähnlich wie mit den Äpfeln und Birnen, die man nicht vergleichen kann! Die Äpfel sind "Excel" und die Birnen "VBA".
Der in Excel zugrunde liegende Kalender beginnt mit dem Tag 1 = 01.01.1900. In VBA beginnt der Kalender mit Tag 1 = 31.12.1899! (Das ist das bekannte Problem mit dem 29.02.1900, den es zwar in Excel gibt, nicht jedoch in VBA!)
Die Summe von Zeiten mit dem Format "TT:hh:mm" in Excel oder VBA auszugeben, ist problematisch! Dies funktioniert in Excel nur, solange die Summe kleiner als 32 Tage (Excel bis 31.01.1900) ist! In VBA ist es von Anfang an falsch! Mit dem Format "TT" wird lediglich der Kalendertag ermittelt!
Gruß
Sigi
Anzeige
AW: Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 23:12:00
Daniel
Hi
wenn du mit Tagen rechnest, und mit der Darstellung Probleme hast, dann kannst du dir auch zunutze machen, daß für Excel ein Datum auch nur eine einfache Zahl ist:
- die Ganzahlen sind die Tage und die Nachkommastellen bilden die Uhrzeit.
wenn du jetzt deine Zeitsumme in der Textbox in "Tage:Stunden:Minuten" anzeigen lassen willst, könnte das so gehen:

Dim ZeitSumme as Double
Dim Tage as Integer
Dim Zeit as Double
ZeitSumme = WorksheetFunction.SumIf(Range("E2:E500"), ">0")
Tage = Worksheetfunction.RoundDown(ZeitSumme, 0)
Zeit = ZeitSumme-Tage
Textbox5 = Tage & ":" & Format(Zeit, "hh:mm")


Gruß, Daniel
PS. das lässt sich sicherlich mit weniger Variablen und Zeilen darstellen, aber so wird hoffentlich deutlicher, was gemeint ist.

Anzeige
AW: Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 23:29:00
Steffan
Hallo Daniel,
einleuchtend deine Lösung.
Mit dieser Routine wird dann ja auch das von Sigi erwähnte Problem mit den 32 Tagen umgangen.
Vielen Dank für diesen neuen Vorschlag.
Gruß, Steffan
AW: Verständnisproblem beim Rechnen mit Zeiten
26.10.2008 23:21:00
Steffan
Hallo Sigi,
deine Äpfel und Birnen haben mich echt zum schmunzeln gebracht. Aber die Erklärung ist super.
Das mit den maximal 32 Tagen ist zurzeit kein Problem weil ich diese Summe noch lange nicht erreichen werde, aber wäre es möglich, die Ausgabe dann als MM:TT:hh:mm in Excel bzw. als MM:dd:hh:mm in VBA zu formatieren?
Gruß Steffan
AW: Monate/Tage im Format
26.10.2008 23:51:00
Erich
Hallo Steffan,
auch Monate im Format sind problematisch - sie verleiten zur falschen Interpretation des Ergebnisses.
Wenn die Summe den Betrag 5,5 hat (= 5 Tage und 12 Stunden), ergibt das den 5. Januar,
angezeigt wird "01 05 12:00". Da kann man schon auf den Gedanken kommen,
es ginge hier um einen Monat plus 5 Tage. Den Monat 00 gibt es eben nicht...
Anderes Beispiel: Bei Summe = 46,25 (46 Tage+6 Std.) würde 02 16 06:00 angezeigt.
Wesentlich ist dabei immer: Beid dieser Formatierung gehen Excel und VBA davon aus,
dass die Zahl kein Zeitraum ist, sondern ein Datum ist (in den Beispielen im Jahr 1900).
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Monate/Tage im Format
28.10.2008 18:23:41
Steffan
Hallo Erich, die Problematik verstehe ich. Letztlich würde mir die Angabe von Tagen:Stunden:Minuten genügen. Zum besseren Verständnis vielleicht der Hinweis, dass es sich bei meiner Tabelle um ein Logbuch für meine Tauchgänge handelt. Jeder einzelne Tauchgang dauert immer so um eine Stunde herum. Bis ich also auf Monate unter Wasser komme bin ich bestimmt schon Rentner. Lach.
Ich glaube, mit dem kurzen VBA Code (siehe oben in diesam Thread) ist mein Problem schon gut gelöst.
Ist denn grundsätzlich möglich Excel (bzw. VBA) dazu zu bringen, einen Zeitraum zu rechnen, oder schließt das die Funktion des Programms von vornherein aus?
Gruß Steffan
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige