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

Forumthread: Unix-Timestamp in umwandeln

Unix-Timestamp in umwandeln
25.07.2018 13:44:20
Albin
Hallo Zusammen
Brauche mal wieder Eure Hilfe
Ich habe eine sehr grosse Tabelle mit Unix-Timestab Ausgabe in Spalte C.
Nun möchte ich mit VBA in Spalte D (Nachbarzelle)die Ausgabe im Format TT.MM.JJJJ hh.mm.ss haben.
Klar mit = B2 / 86400 + 25569 würde es gehen. Wäre aber schön wenn es mit VBA geht.
VBA sollte von der zweiten Zeile bis zur letzte Zeile durchlaufen.
Siehe Beilage.
https://www.herber.de/bbs/user/122877.xlsx
Danke und Gruss
Albin
Anzeige

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Unix-Timestamp in umwandeln
25.07.2018 14:04:05
Nepumuk
Hallo Albin,
teste mal:
Option Explicit

Public Sub ConvertTimestamp()
    Dim avntUnix As Variant, vntItem As Variant
    Dim adtmDateTime() As Date
    Dim ialngIndex As Long, lngCount As Long
    With Tabelle2
        avntUnix = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)).Value2
    End With
    lngCount = UBound(avntUnix, 1)
    Redim adtmDateTime(1 To lngCount)
    For Each vntItem In avntUnix
        ialngIndex = ialngIndex + 1
        adtmDateTime(ialngIndex) = vntItem / 86400 + 25569
    Next
    Tabelle2.Cells(2, 3).Resize(lngCount, 1).Value = Application.Transpose(adtmDateTime)
End Sub

Gruß
Nepumuk
Anzeige
AW: Unix-Timestamp in umwandeln
25.07.2018 16:12:30
Albin
Hoi Nepunmuk
Danke für die rasche Lösung. Wie es leider aussieht, habe ich ein Mengenproblem. Wenn es nur ca. 1000 Zeilen sind, läuft das Makro wunderbar durch. Ich habe ca. 393000 Zeilen :-( Da kommt der blöde Fehler Laufzeitfehler 13, Typen unverträglich.
Gibt es dafür eine Lösung?
Gruss Albin
PS: kann leider das File nicht downloaden, ist ca. 8 MB gross.
Anzeige
AW: Unix-Timestamp in umwandeln
25.07.2018 16:33:59
Nepumuk
Hallo Albi,
dann so:
Option Explicit

Public Sub ConvertTimestamp()
    Dim avntUnix As Variant, vntItem As Variant
    Dim adtmDateTime() As Date
    Dim ialngIndex As Long, lngCount As Long
    With Tabelle2
        avntUnix = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)).Value2
    End With
    lngCount = UBound(avntUnix, 1)
    Redim adtmDateTime(1 To lngCount, 0 To 0)
    For Each vntItem In avntUnix
        ialngIndex = ialngIndex + 1
        adtmDateTime(ialngIndex, 0) = vntItem / 86400 + 25569
    Next
    Tabelle2.Cells(2, 3).Resize(lngCount, 1).Value = adtmDateTime
End Sub

Gruß
Nepumuk
Anzeige
AW: Unix-Timestamp in umwandeln
25.07.2018 18:10:00
Albin
Hallo Nepunmuk
jetzt läuft es wie eine 1.
Super und vielen Dank für deine Lösung.
Lieber Gruss
Albin
AW: Unix-Timestamp in umwandeln
25.07.2018 21:18:06
Günther
Moin,
mit Power Query reicht auch ein Einzeiler ;-) und das geht rack zack ...
Schau mal hier nach: http://www.excel-ist-sexy.de/pqq-unix-zeitformat-umwandeln/
Gruß
Günther
Anzeige
AW: Unix-Timestamp in umwandeln mit VBA einfach
25.07.2018 21:34:21
Daniel
Hi
du kannst auch in VBA mit Formeln arbeiten.
ist schnell, massendatentauglich und einfach zu programmieren.
With Range("C2:C" & Cells(Rows.count, 2).end(xlup).row)
.FormulaR1C1 = "=RC2/86400+25569"
.Formula = .Value
.Numberformat = "DD.MM.YYYY hh:mm:ss"
End With
Gruß Daniel
Anzeige
AW: Unix-Timestamp in umwandeln
25.07.2018 22:00:49
Daniel
Hi
nochmal ne Variante, auch sehr schnell für große Datenmengen
Sub test()
Dim Zelle As Range
Set Zelle = Cells(1, Columns.Count).End(xlToLeft).Offset(0, 2)
With Range("B1:B" & Cells(Rows.Count, 2).End(xlUp).Row)
.Copy .Offset(0, 1)
With .Offset(0, 1)
Zelle.Value = 86400
Zelle.Copy
.PasteSpecial xlPasteValues, operation:=xlPasteSpecialOperationDivide
Zelle.Value = 25569
Zelle.Copy
.PasteSpecial xlPasteValues, operation:=xlPasteSpecialOperationAdd
.Cells(1).Value = "Time"
.NumberFormat = "DD.MM.YYYY hh:mm:ss"
Zelle.Clear
End With
End With
End Sub
Gruß Daniel
Anzeige
AW: Unix-Timestamp in umwandeln
26.07.2018 10:26:49
Albin
Hoi Daniel
Auch ein Danke für deine Lösung, ist auch super schnell. Wenn ich Dich schon in der Leitung habe, habe ich eine andere Fragen bezüglich der Geschwindigkeit. Ich habe in der Spalte D eine sehr langen Text / Zahlen drin.
Nun möchte ich alle Zeilen löschen, die nicht zum Beispiel den Inhalt *1234* drin haben. Mit dem nachfolgenden Makro geht es zwar, aber bei 600000 braucht dieser Druchlauf sehr lange. :-(
Diese Zeile mit Text in Spalte D sollte nicht gelöscht warden:
Bereitschaft 1234 eintragen -> Loginuser: TKT4M / Kreis: 1014 / MA: Mika Tammilehto / Am: 22.10.2018
Lieber Gruss
Albin
Sub test()
Dim i As Long
Dim letzteZeile As Long
letzteZeile = Range("d65536").End(xlUp).Row
For i = letzteZeile To 1 Step -1
If Not Cells(i, 5).Value Like "*1234*" Then
Rows(i).Delete Shift:=xlUp
End If
Next i
End Sub

Anzeige
AW: Unix-Timestamp in umwandeln
29.07.2018 19:29:14
Daniel
Hi
zum Zeilenlöschen mit bedingung verwende das Duplikate-Entfernen.
das ist auch bei großen Datenmengen sehr schnell.
hierzu schreibt man in die erste freie Spalte eine Formel, welche alle Zeilen, die gelöscht werden müssen, mit der 0 kennzeichnet und alle die stehen bleiben sollen mit der Zeilennummer
in die Überschriftenzeile kommt ebenfalls die 0
dann kann man mit dem Duplikate-Entfernen alle Zeilen mit 0 löschen, nur die erste Zeile mit 0, die Überschrift bleibt stehen.
sieht als Code so aus:
With ActiveSheet.Usedrange
With .Columns(.columns.Count + 1)
.formular1c1 = "=if(isnumber(find("1234",RC4)),Row(),0)"
.Cells(1, 1).Value = 0
.EntireRow.Removeduplicates .column, xlno
.clearcontents
end with
end with
Gruß Daniel
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Unix-Timestamp in Datum umwandeln


Schritt-für-Schritt-Anleitung

Um einen Unix-Timestamp in Excel in ein lesbares Datum umzuwandeln, kannst Du folgende Schritte ausführen:

  1. Öffne Deine Excel-Tabelle mit den Unix-Timestamps in einer Spalte (z.B. Spalte C).

  2. Füge eine neue Spalte daneben hinzu (z.B. Spalte D), in der das Datum angezeigt werden soll.

  3. Verwende die folgende Formel in Zelle D2, um den Unix-Timestamp in ein Datum umzuwandeln:

    =C2/86400 + 25569

    Diese Formel konvertiert den Unix-Timestamp (in Sekunden) in das Excel-Datum, indem sie den Wert durch die Anzahl der Sekunden pro Tag (86400) teilt und den Basiswert für Excel-Daten (25569) hinzufügt.

  4. Ziehe die Formel nach unten, um sie auf alle Zeilen anzuwenden. Alternativ kannst Du auch ein VBA-Makro verwenden, um die Umwandlung für eine große Datenmenge effizienter zu gestalten.


Häufige Fehler und Lösungen

  • Laufzeitfehler 13, Typen unverträglich: Dies passiert oft, wenn die Daten in der Spalte nicht im richtigen Format vorliegen. Stelle sicher, dass alle Werte in der Spalte C als Zahl formatiert sind.

  • Excel zeigt das Datum nicht richtig an: Vergewissere Dich, dass die Zellen in Spalte D im richtigen Datum-Format formatiert sind. Wähle die Zellen aus und gehe zu Start > Zahlenformat, um das gewünschte Datum-Format auszuwählen.


Alternative Methoden

Zusätzlich zur Verwendung von Formeln kannst Du auch VBA-Methoden nutzen, um Unix-Timestamps zu konvertieren. Hier ist ein einfaches VBA-Skript:

Public Sub ConvertTimestamp()
    Dim avntUnix As Variant
    Dim vntItem As Variant
    Dim adtmDateTime() As Date
    Dim lngCount As Long
    Dim ialngIndex As Long

    With Tabelle2
        avntUnix = .Range(.Cells(2, 2), .Cells(.Rows.Count, 2).End(xlUp)).Value2
    End With

    lngCount = UBound(avntUnix, 1)
    ReDim adtmDateTime(1 To lngCount)

    For Each vntItem In avntUnix
        ialngIndex = ialngIndex + 1
        adtmDateTime(ialngIndex) = vntItem / 86400 + 25569
    Next

    Tabelle2.Cells(2, 3).Resize(lngCount, 1).Value = Application.Transpose(adtmDateTime)
End Sub

Dieses Skript konvertiert alle Unix-Timestamps in der zweiten Spalte in lesbare Datumswerte in der dritten Spalte.


Praktische Beispiele

  1. Beispiel mit einer kleinen Datenmenge: Angenommen, Du hast folgende Unix-Timestamps in Spalte C:

    • 1532526260
    • 1532527445
    • 1532535150

    Verwende die Formel in D2 und ziehe sie nach unten, um die entsprechenden Datumswerte zu erhalten.

  2. Große Datenmengen: Wenn Du mit über 300.000 Zeilen arbeitest, ist es ratsam, die VBA-Methode zu verwenden, um die Leistung zu optimieren.


Tipps für Profis

  • Nutze Power Query: Für eine schnelle Umwandlung großer Datenmengen bietet sich Power Query an. Mit nur einem Einzeiler kannst Du die Unix-Zeit umwandeln, was die Verarbeitungsgeschwindigkeit erheblich erhöht.

  • Fehlerbehandlung in VBA: Wenn Du ein VBA-Skript verwendest, füge Fehlerbehandlungsroutinen hinzu, um Laufzeitfehler zu vermeiden.

  • Formatierung der Zeitstempel: Stelle sicher, dass Du das korrekte Excel-Datum-Format verwendest, um die Zeitstempel gut lesbar zu machen.


FAQ: Häufige Fragen

1. Wie kann ich Unix-Timestamps in Excel umwandeln?
Verwende die Formel =C2/86400 + 25569 in Excel oder ein VBA-Skript, um die Umwandlung effizient zu gestalten.

2. Was ist der Unterschied zwischen Unix-Zeit und Excel-Daten?
Unix-Zeit ist die Anzahl der Sekunden seit dem 1. Januar 1970, während Excel-Daten als die Anzahl der Tage seit dem 30. Dezember 1899 betrachtet werden.

3. Wie kann ich große Datenmengen effizient umwandeln?
Nutze VBA, um die Umwandlung zu automatisieren, oder Power Query für eine schnellere Verarbeitung.

4. Was kann ich tun, wenn ich auf einen Laufzeitfehler stoße?
Überprüfe die Datentypen in Deinen Zellen und stelle sicher, dass alle Werte korrekt formatiert sind.

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