Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

GMT-Umwandlung

Forumthread: GMT-Umwandlung

GMT-Umwandlung
25.01.2017 22:15:53
Kursawe,
Servus zusammen
ich erhalte in der Arbeit Kurszeitreihen mit Uhrzeit-Angabe in GMT.
Wie kann ich in Excel, besser VBA, die aktuelle lokale Zeit abfragen, um die GMT-Zeitangaben in lokale Zeit umzuwandeln. Einfach mit +1 Stunde will ichs nicht machen, da in der Sommerzeit oder anderen Zeitzonen das Ganze auch funktionieren soll.
Weiß da jemand Rat?
Thomas
Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: GMT-Umwandlung
25.01.2017 23:42:17
Planlos
Hallo
versuch

Private Type SYSTEMTIME
wYear As Integer
wMonth As Integer
wDayOfWeek As Integer
wDay As Integer
wHour As Integer
wMinute As Integer
wSecond As Integer
wMilliseconds As Integer
End Type
Private Type TIME_ZONE_INFORMATION
Bias As Long
StandardName As String * 64
StandardDate As SYSTEMTIME
StandardBias As Long
DaylightName As String * 64
DaylightDate As SYSTEMTIME
DaylightBias As Long
End Type
Private Declare Function SystemTimeToTzSpecificLocalTime Lib "KERNEL32.DLL" _
( _
ByVal lpTIME_ZONE_INFORMATION As Long, _
ByRef lpUniversalTime As SYSTEMTIME, _
ByRef lpLocalTime As SYSTEMTIME _
) As Long
Private Declare Function GetTimeZoneInformation Lib "KERNEL32.DLL" _
( _
ByVal lpTIME_ZONE_INFORMATION As Long _
) As Long
Private Declare Function VariantTimeToSystemTime Lib "OLEAUT32.DLL" _
( _
ByVal vbtime As Double, _
lpSystemTime As SYSTEMTIME _
) As Long
Private Declare Function SystemTimeToVariantTime Lib "OLEAUT32.DLL" _
( _
lpSystemTime As SYSTEMTIME, _
vbtime As Double _
) As Long
Function UTCToLocalTime(ByVal Datetime As Double) As Date
Dim st As SYSTEMTIME
Dim tzi As TIME_ZONE_INFORMATION
Const TIME_ZONE_ID_INVALID = &HFFFFFFFF
VariantTimeToSystemTime Datetime, st
If GetTimeZoneInformation(VarPtr(tzi))  TIME_ZONE_ID_INVALID Then
SystemTimeToTzSpecificLocalTime VarPtr(tzi), st, st
SystemTimeToVariantTime st, Datetime
UTCToLocalTime = Datetime
End If
End Function

Anzeige
AW: GMT-Umwandlung
26.01.2017 21:24:59
Kursawe,
Danke!
Werd ich versuchen
Hatte heut in der Arbeit keinen Access auf den thread
dacht mir schon, daß das n bisserl mehr wird als nur n kurzer Einzeiler... Hätte gehofft, s gäb nen Einzeiler, diese Systeminfo abzurufen.
Werds testen und feedback geben!
Kann aber Wochenende werden
Thomas
Anzeige
;
Anzeige

Infobox / Tutorial

GMT-Umwandlung in Excel und VBA


Schritt-für-Schritt-Anleitung

Um die aktuelle GMT-Zeit in Excel in die lokale Zeit umzuwandeln, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. VBA-Editor öffnen: Drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Neues Modul erstellen: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt, wähle „Einfügen“ und dann „Modul“.
  3. Code einfügen: Kopiere den folgenden Code in das Modul:
Private Type SYSTEMTIME
    wYear As Integer
    wMonth As Integer
    wDayOfWeek As Integer
    wDay As Integer
    wHour As Integer
    wMinute As Integer
    wSecond As Integer
    wMilliseconds As Integer
End Type

Private Type TIME_ZONE_INFORMATION
    Bias As Long
    StandardName As String * 64
    StandardDate As SYSTEMTIME
    StandardBias As Long
    DaylightName As String * 64
    DaylightDate As SYSTEMTIME
    DaylightBias As Long
End Type

Private Declare Function SystemTimeToTzSpecificLocalTime Lib "KERNEL32.DLL" _
    (ByVal lpTIME_ZONE_INFORMATION As Long, _
    ByRef lpUniversalTime As SYSTEMTIME, _
    ByRef lpLocalTime As SYSTEMTIME) As Long

Private Declare Function GetTimeZoneInformation Lib "KERNEL32.DLL" _
    (ByVal lpTIME_ZONE_INFORMATION As Long) As Long

Private Declare Function VariantTimeToSystemTime Lib "OLEAUT32.DLL" _
    (ByVal vbtime As Double, lpSystemTime As SYSTEMTIME) As Long

Private Declare Function SystemTimeToVariantTime Lib "OLEAUT32.DLL" _
    (lpSystemTime As SYSTEMTIME, vbtime As Double) As Long

Function UTCToLocalTime(ByVal Datetime As Double) As Date
    Dim st As SYSTEMTIME
    Dim tzi As TIME_ZONE_INFORMATION
    Const TIME_ZONE_ID_INVALID = &HFFFFFFFF
    VariantTimeToSystemTime Datetime, st
    If GetTimeZoneInformation(VarPtr(tzi)) <> TIME_ZONE_ID_INVALID Then
        SystemTimeToTzSpecificLocalTime VarPtr(tzi), st, st
        SystemTimeToVariantTime st, Datetime
        UTCToLocalTime = Datetime
    End If
End Function
  1. Die Funktion nutzen: Du kannst nun die Funktion UTCToLocalTime in Excel verwenden. Gib in eine Zelle den Wert ein, den du umrechnen möchtest, und verwende die Formel:
=UTCToLocalTime(A1)

Dabei steht A1 für die Zelle, in der die GMT-Zeit gespeichert ist.


Häufige Fehler und Lösungen

  • Fehler: Funktion nicht verfügbar: Stelle sicher, dass du den VBA-Code korrekt eingefügt hast und dass du in einer passenden Excel-Version arbeitest (mindestens Excel 2007).
  • Fehler: Ungültige Zeit: Überprüfe, ob der in der Zelle eingegebene Wert im richtigen Format vorliegt. Die Zeit sollte als Zahl (z.B. 43466 für den 1. Januar 2018) eingegeben werden.

Alternative Methoden

Falls du keinen VBA-Code verwenden möchtest, kannst du auch die Excel-Funktion NOW() kombinieren mit der manuellen Anpassung der Zeit:

  1. Aktuelle GMT-Zeit abrufen: Verwende =NOW() + (GMT_OFFSET/24), wobei GMT_OFFSET die Stundenverschiebung von GMT zu deiner lokalen Zeit ist.
  2. Sommerzeit berücksichtigen: Du musst die Verschiebung manuell anpassen, je nach Sommerzeit.

Praktische Beispiele

  • Beispiel 1: Du hast in Zelle A1 die GMT-Zeit 44000 (das entspricht dem 1. Januar 2021, 12:00 Uhr GMT). Die Formel in Zelle B1 wäre:
=UTCToLocalTime(A1)
  • Beispiel 2: Um die aktuelle GMT-Zeit zu berechnen, könntest du in Zelle A2 die Formel =NOW() verwenden und dann =UTCToLocalTime(A2) in Zelle B2.

Tipps für Profis

  • Verwendung von Zeitzonen-Tabellen: Erstelle eine Zeitzonen-Tabelle in Excel, um die Umrechnung für verschiedene Zeitzonen zu vereinfachen.
  • Automatisierung: Kombiniere die VBA-Funktion mit einem Button, um die Umrechnung mit einem Klick auszulösen.
  • VBA-Fehlerbehebung: Nutze Debug.Print, um Werte während der Ausführung zu überprüfen, wenn du auf Fehler stößt.

FAQ: Häufige Fragen

1. Wie kann ich die aktuelle GMT-Zeit in Excel anzeigen?
Du kannst die Funktion NOW() verwenden und die Zeit manuell anpassen, um die GMT-Zeit zu erhalten.

2. Gibt es eine einfache Formel für die GMT-Umwandlung ohne VBA?
Ja, du kannst die Zeitverschiebung manuell in Excel berechnen, indem du =NOW() + (Offset/24) verwendest.

3. Unterstützt die VBA-Funktion auch Sommerzeit?
Ja, die Funktion berücksichtigt die lokale Zeit und passt sich der Sommerzeit automatisch an, wenn sie korrekt implementiert ist.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige