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

Forumthread: zeitformat in dezimalformat und umgekehrt

zeitformat in dezimalformat und umgekehrt
02.06.2007 21:07:00
tom

hallo,
habe probleme bei der umwandlung per vba von zeitformaten in dezimalformate.
ich wäre sehr dankbar für nen kleinen tip.
beispiel:
beginn und xtime sind als date formatiert
"sub zeit
a = "5:30"
Dim beginn As Date
beginn = Format(a, "hh:mm")
x = "06:00"
Dim xtime As Date
xtime = Format(x, "hh:mm")
If beginn < xtime Then
plus = Format(xtime - beginn, "hh:mm")
MsgBox plus
End If"
das ergebnis "plus" möchte ich nun per vba in eine dezimalzahl und
nach verschiedenen berechnungen wieder in das zeitformat umwandeln.
vielen dank schon mal - tom

Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: zeitformat in dezimalformat und umgekehrt
02.06.2007 21:31:00
Josef
Hallo Tom,
bei "VBA gut" solltest du dich mit den verschiedenen Datentypen aber schon auskennen.
Sub zeit()
Dim start As String, ende As String
Dim beginn As Date, xtime As Date, plus As Variant

start = "5:30" 'String
ende = "06:00" 'String

beginn = CDate(start) 'Datum/Zeit
xtime = CDate(ende) 'Datum/Zeit



If beginn < xtime Then
    plus = xtime - beginn 'Datum/Zeit
    MsgBox Format(plus, "hh:mm") 'String
End If

plus = CDbl(plus) 'Dezimal

MsgBox plus

plus = CDate(plus) 'Datum/Zeit

MsgBox plus

End Sub

Gruß Sepp

Anzeige
AW: zeitformat in dezimalformat und umgekehrt
02.06.2007 21:51:00
tom
vielen dank sepp, ps: vba mittel gibts nicht
gruß - tom

AW: zeitformat in dezimalformat und umgekehrt
02.06.2007 21:37:00
Matthias
Hallo Tom,
wenn beginn ald Date deklariert ist, wieso dann die Zeile:
beginn = Format(a, "hh:mm") ?
Es kommt zwar kein Fehler, aber Format ist doch für Strings gedacht.

Function ToDezimal(t As Date) As Double
ToDezimal = CDbl(t) * 24
End Function
Function ToDate(d As Double) As Date
ToDate = CDate(d / 24)
End Function


Gruß Matthias

Anzeige
AW: zeitformat in dezimalformat und umgekehrt
02.06.2007 22:03:35
tom
hallo matthias, vielen dank für deine mühe
ich hab jetzt nicht ausprobiert, ob die nachträgliche formatierung hier notwendig ist, bringt aber die möglichkeit, entsprechend formatierte ergebnisse zurückzubekommen.
gruß tom

AW: zeitformat in dezimalformat und umgekehrt
02.06.2007 22:07:00
Matthias
Hallo Tom,
...bringt aber die möglichkeit, entsprechend formatierte ergebnisse zurückzubekommen.

Ja, aber nicht für Date-Variablen:

Sub test()
Dim d As Date
d = Format("6:30", "hh:mm")
Debug.Print d
d = Format("6:30", "dd/mm/yyyy hh:mm")
Debug.Print d
End Sub


Gruß Matthias

Anzeige
;

Forumthreads zu verwandten Themen

Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeitformat in Dezimalformat umwandeln und umgekehrt


Schritt-für-Schritt-Anleitung

  1. VBA-Umgebung öffnen: Gehe in Excel auf Entwicklertools und klicke auf Visual Basic, um den VBA-Editor zu öffnen.

  2. Neues Modul erstellen: Klicke im Projektfenster mit der rechten Maustaste auf dein Projekt und wähle Einfügen > Modul.

  3. Code einfügen: Kopiere den folgenden Code in das Modul:

    Sub zeit()
       Dim start As String, ende As String
       Dim beginn As Date, xtime As Date
       Dim plus As Variant
    
       start = "5:30" ' Startzeit
       ende = "06:00" ' Endzeit
    
       beginn = CDate(start) ' Konvertiere String in Datum/Zeit
       xtime = CDate(ende)   ' Konvertiere String in Datum/Zeit
    
       If beginn < xtime Then
           plus = xtime - beginn ' Berechnung der Zeitdifferenz
           MsgBox Format(plus, "hh:mm") ' Ausgabe der Zeitdifferenz
    
           plus = CDbl(plus) * 24 ' Umwandlung in Dezimalzahl
           MsgBox plus ' Ausgabe der Dezimalzahl
    
           plus = CDate(plus / 24) ' Umwandlung zurück in Zeitformat
           MsgBox Format(plus, "hh:mm") ' Ausgabe im Zeitformat
       End If
    End Sub
  4. Makro ausführen: Drücke F5, um das Makro auszuführen. Du wirst die Ergebnisse in mehreren MsgBoxen sehen.


Häufige Fehler und Lösungen

  • Fehler: "Typ nicht korrekt": Stelle sicher, dass die Variablen richtig deklariert sind. Verwende Dim für die Typen und vermeide die Verwendung von Format für Datumstypen.

  • Problem mit der Zeitdifferenz: Wenn das Ergebnis nicht wie erwartet erscheint, überprüfe den Datentyp der Variablen. Du kannst CDbl verwenden, um die Zeit in eine Dezimalzahl umzuwandeln.

  • Dezimalzahlen werden nicht korrekt angezeigt: Stelle sicher, dass du das Ergebnis mit * 24 multiplizierst, um die Zeit in Dezimalformat umzurechnen.


Alternative Methoden

  • Excel-Formeln: Du kannst auch folgende Excel-Formel verwenden, um eine Zeitangabe in Dezimalformat zu konvertieren:

    =A1*24

    Hierbei ist A1 die Zelle mit der Zeit im Format hh:mm.

  • VBA-Funktionen: Erstelle eigene Funktionen zur Umwandlung von Zeit in Dezimal und umgekehrt:

    Function ToDezimal(t As Date) As Double
       ToDezimal = CDbl(t) * 24
    End Function
    
    Function ToDate(d As Double) As Date
       ToDate = CDate(d / 24)
    End Function

Praktische Beispiele

  1. Umwandlung von hh:mm in Dezimal:

    • Eine Zeit von 6:30 in Dezimal umwandeln: =A1*24 ergibt 6.5.
  2. Umwandlung von Dezimal zurück in hh:mm:

    • Eine Dezimalzahl von 6.5 zurück in Zeit: =A1/24 ergibt 6:30.

Tipps für Profis

  • Verwende die Format-Funktion, um sicherzustellen, dass die Ausgabe die gewünschte Darstellung hat, z.B. Format(plus, "hh:mm").

  • Beachte, dass Excel intern Zeit als Bruchteil eines Tages speichert. Daher ist das Multiplizieren mit 24 notwendig, um die Zeit in Dezimal zu konvertieren.

  • Wenn du mit großen Datenmengen arbeitest, kann die Verwendung von VBA zur Automatisierung der Umwandlungen deine Effizienz erheblich steigern.


FAQ: Häufige Fragen

1. Wie konvertiere ich eine Uhrzeit in Dezimal? Um eine Uhrzeit in Dezimal zu konvertieren, kannst du die Formel =A1*24 verwenden, wobei A1 die Zelle mit der Uhrzeit ist.

2. Kann ich auch negative Zeitdifferenzen berechnen? Ja, du kannst negative Zeitdifferenzen berechnen. Achte jedoch darauf, dass die Startzeit immer kleiner als die Endzeit ist, um ein negatives Ergebnis zu vermeiden.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige