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:
- VBA-Editor öffnen: Drücke
ALT + F11, um den VBA-Editor zu öffnen.
- Neues Modul erstellen: Klicke im Projekt-Explorer mit der rechten Maustaste auf dein Projekt, wähle „Einfügen“ und dann „Modul“.
- 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
- 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:
- Aktuelle GMT-Zeit abrufen: Verwende
=NOW() + (GMT_OFFSET/24), wobei GMT_OFFSET die Stundenverschiebung von GMT zu deiner lokalen Zeit ist.
- 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.