GMT ist eine Abkürzung für Greenwich Meridian Time, eine Referenzzeit für die Welt. Es ist die Zeit in Greenwich, England, und wird manchmal als „Zulu-Zeit“ bezeichnet. (Zulu ist der phonetische Name für Null und die Null bezieht sich auf die Länge von Greenwich, England.)

Möglicherweise müssen Sie eine Ortszeit in Ihrem Arbeitsblatt in GMT konvertieren. Wenn Sie immer wissen, dass die Zeit in der Ortszeit eingegeben wird, können Sie dies ganz einfach mit einer Formel tun. Angenommen, Sie geben die Ortszeit in Zelle B7 ein und befinden sich in der pazifischen Zeitzone. In dieser Zeitzone sind Sie entweder sieben oder acht Stunden hinter GMT zurück, je nachdem, ob die Sommerzeit gültig ist. Mit der folgenden Formel wird die in B7 eingegebene Zeit um sieben oder acht Stunden angepasst, je nachdem, ob das mit der Zeit verknüpfte Datum innerhalb des Zeitraums der Sommerzeit liegt.

=IF(AND(B7>=DATEVALUE("3/8/2009 02:00"),B19<= DATEVALUE("11/01/2009 02:00")),B7+7/24,B7+8/24)

Denken Sie daran, dass Excel bei jeder Eingabe einer Uhrzeit in eine Zelle automatisch ein Datum anfügt. Wenn Sie also eine Zeit von 10:15 in eine Zelle eingeben und der Tag, an dem Sie die Eingabe vornehmen, der 17. Januar ist, konvertiert Excel den Eintrag in der Zelle automatisch in den 17.01.2009 um 10:15:00 Uhr. Dies geschieht, obwohl Sie möglicherweise nur die Uhrzeit in der Zelle anzeigen. In Excel ist jedem Datum eine Uhrzeit und jeder Zeit ein Datum zugeordnet.

Aufgrund dieses Eingabeverhaltens würde Excel die gerade gezeigte Formel verwenden, um die richtige Anpassung basierend auf dem Standarddatum vorzunehmen, wenn Sie eine Uhrzeit (das heutige Datum) oder ein Datum eingeben, das Sie explizit eingeben können.

Der einzige Nachteil dieses formelhaften Ansatzes besteht darin, dass Sie daran denken müssen, die Grenzwerte für die Sommerzeit von Jahr zu Jahr zu ändern.

(Die Angaben in der Formel beziehen sich auf 2009.) Sie können die Formel so ändern, dass Sie die Grenzdaten tatsächlich wie folgt in Zellen wie E1 und E2 gespeichert haben:

=IF(AND(B7>=$E$1,B19<=$E$2),B7+7/24,B7+8/24)

Obwohl die Formel kürzer ist, gibt es immer noch ein Problem mit der eher statischen Bestimmung, wann die Sommerzeit beginnt und endet. Sie müssen daran denken, diese Informationen manuell zu aktualisieren. Wenn Sie in eine andere Zeitzone wechseln, müssen Sie außerdem daran denken, die Werte zu ändern, um die Datum und Uhrzeit angepasst werden.

Eine sehr praktische Möglichkeit, diese Nachteile zu umgehen, besteht darin, eine benutzerdefinierte Funktion zu erstellen, die auf die Windows-Benutzeroberfläche zugreift und die Systemeinstellungen Ihres Computers festlegt. Ihr System verfolgt automatisch die Sommerzeit sowie die Zeitzone, in der Sie sich befinden. Wenn Sie über eine benutzerdefinierte Funktion auf diese Informationen zugreifen, müssen Sie sich nie um diese Elemente in Ihrem Arbeitsblatt kümmern. Sie können das folgende Makro verwenden, um genau das zu tun:

Option Explicit

Public Declare Function SystemTimeToFileTime Lib _   "kernel32" (lpSystemTime As SYSTEMTIME, _   lpFileTime As FILETIME) As Long

Public Declare Function LocalFileTimeToFileTime Lib _   "kernel32" (lpLocalFileTime As FILETIME, _   lpFileTime As FILETIME) As Long

Public Declare Function FileTimeToSystemTime Lib _   "kernel32" (lpFileTime As FILETIME, lpSystemTime _   As SYSTEMTIME) As Long

Public Type FILETIME     dwLowDateTime As Long     dwHighDateTime As Long End Type

Public 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

Public Function LocalTimeToUTC(dteTime As Date) As Date     Dim dteLocalFileTime As FILETIME     Dim dteFileTime As FILETIME     Dim dteLocalSystemTime As SYSTEMTIME     Dim dteSystemTime As SYSTEMTIME

dteLocalSystemTime.wYear = CInt(Year(dteTime))

dteLocalSystemTime.wMonth = CInt(Month(dteTime))

dteLocalSystemTime.wDay = CInt(Day(dteTime))

dteLocalSystemTime.wHour = CInt(Hour(dteTime))

dteLocalSystemTime.wMinute = CInt(Minute(dteTime))

dteLocalSystemTime.wSecond = CInt(Second(dteTime))



Call SystemTimeToFileTime(dteLocalSystemTime, _       dteLocalFileTime)

Call LocalFileTimeToFileTime(dteLocalFileTime, _       dteFileTime)

Call FileTimeToSystemTime(dteFileTime, dteSystemTime)



LocalTimeToUTC = CDate(dteSystemTime.wMonth & "/" & _       dteSystemTime.wDay & "/" & _       dteSystemTime.wYear & " " & _       dteSystemTime.wHour & ":" & _       dteSystemTime.wMinute & ":" & _       dteSystemTime.wSecond)

End Function

Dies mag imposant aussehen, wie es häufig bei der Arbeit mit Systemaufrufen der Fall ist, funktioniert aber wunderbar. Es werden drei Systemroutinen referenziert (SystemTimeToFileTime, LocalFileTimeToFileTime und FileTimeToSystemTime). Indem Sie die Anrufe einrichten und in der richtigen Reihenfolge verwenden, werden Datum und Uhrzeit automatisch an GMT angepasst. Um die Funktion zu verwenden, geben Sie dies in Ihr Arbeitsblatt ein, um die Zeit in Zelle B7 zu konvertieren:

=localtimetoutc(B7)

Formatieren Sie die Zelle als Datum / Uhrzeit, und die Ausgabe ist genau das, was Sie wollten.

ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.

Dieser Tipp (2185) gilt für Microsoft Excel 97, 2000, 2002 und 2003. Eine Version dieses Tipps für die Multifunktionsleistenschnittstelle von Excel (Excel 2007 und höher) finden Sie hier: