lcer00
Goto Top

Excel Datumstexte in Datum konvertieren

Hallo,

ich bin jetzt definitiv kein EXCEL-Profi und möchte eine Tabelle erstellen, in der die Ablaufdaten meiner Zertifikate sortiert drin stehen. Die Ablaufdaten kommen zum Teil aus Geräten, bei denen ich nur über eine GUI zugriff habe und sehen dann so aus (bisher sind folgende Varianten aufgetreten):

Dec 23 12:00:06 2029 GMT
Sat, 08 Apr 2023 11:35:03 +0200
Tue Jan 06 09:57:23 CET 2026

Kann man daraus in EXCEL Datum und Uhrzeit irgendwie elegant automatisiert herauskonvertieren?

Grüße

lcer

Content-Key: 1493581651

Url: https://administrator.de/contentid/1493581651

Printed on: May 10, 2024 at 04:05 o'clock

Member: Bingo61
Bingo61 Nov 11, 2021 at 08:42:50 (UTC)
Goto Top
Servus,

bin nun auch kein Excel Profi, aber hast mal versucht mit der Import funktion die Daten zu bekommen? Die Zellen dann in Datum Konvertieren .
Member: lcer00
lcer00 Nov 11, 2021 at 09:07:03 (UTC)
Goto Top
Zitat von @Bingo61:

Servus,

bin nun auch kein Excel Profi, aber hast mal versucht mit der Import funktion die Daten zu bekommen? Die Zellen dann in Datum Konvertieren .

grad getestet, so intelligent ist er nicht.

Grüße

lcer
Member: lcer00
lcer00 Nov 11, 2021 at 09:09:17 (UTC)
Goto Top
OK, dann läuft es wohl auf a) Handarbeit oder b) eine VBA-Regex-Funktion heraus.

Grüße

lcer
Mitglied: 148656
148656 Nov 11, 2021 at 09:16:10 (UTC)
Goto Top
Schöner Spruch aus Österreich xD

Ist die Technik noch so weit, Handarbeit bleibt Handarbeit.
Member: lcer00
lcer00 Nov 11, 2021 at 09:49:22 (UTC)
Goto Top
Hallo,
Zitat von @148656:

Schöner Spruch aus Österreich xD

Ist die Technik noch so weit, Handarbeit bleibt Handarbeit.
Ja, aber, wenn man sieht, wie manche Open-World-Ballerspiele graphische Höchstleistungen einschließlich Raytracing vollbringen, wundert man sich doch manchmal, wie unvollkommen doch andere Anwendungen - insbesondere die arbeitsplatzbezogenen sind.

Andererseits gibt es Excel ja auch nur aus Gründen der Rückwärtskompatibilität zu Kugelschreiberlistenausfüllern. Kein Mensch braucht eine Tabellenkalkulationsoftware. Dafür gibt es Datenbanken und mittlerweile jede Menge Visualisierungstools. Also selbst schuld. Ich hätte ja gleich was ordentliches verwenden können.

Grüße

lcer
Mitglied: 149569
149569 Nov 11, 2021 updated at 12:08:19 (UTC)
Goto Top
Zitat von @lcer00:
ich bin jetzt definitiv kein EXCEL-Profi und möchte eine Tabelle erstellen, in der die Ablaufdaten meiner Zertifikate sortiert drin stehen.
Warum liest du das Datum nicht direkt aus den ausgestellten Zertifikaten oder deiner Zertifizierungsstelle aus? Z.B. via Powershell ist das kein Thema mit dem x509Certificate Object, dann entfällt das String-Gefrickel.
Bei mir würde das ja schon direkt beim Ausstellen des Certs in einem Log mit einheitlichem Datum landen.
Oder man lässt das am besten gleich das Monitoring-System erledigen das einen rechtzeitig vor Ablauf der Certs informiert, in nem Excel-File vergammelt das doch gerne mal face-smile.
Member: lcer00
lcer00 Nov 11, 2021 at 12:08:38 (UTC)
Goto Top
Zitat von @149569:

Zitat von @lcer00:
ich bin jetzt definitiv kein EXCEL-Profi und möchte eine Tabelle erstellen, in der die Ablaufdaten meiner Zertifikate sortiert drin stehen.
Warum liest du das Datum nicht direkt aus den ausgestellten Zertifikaten oder deiner Zertifizierungsstelle aus? Z.B. via Powershell ist das kein Thema mit dem x509Certificate Object, dann entfällt das String-Gefrickel.
Bei mir würde das ja schon direkt beim Ausstellen des Certs in einem Log mit einheitlichem Datum landen.

Weil das (zum Teil) keine von mir erstellen Zertifikate sind, sondern Zertifikate auf Smartcards externer CAs (Telematik, Gematik). Ansonsten hättest Du natürlich recht.

Grüße

lcer
Mitglied: 149569
Solution 149569 Nov 11, 2021 updated at 12:13:22 (UTC)
Goto Top
Dann nimm halt die Powershell und ergänze deine Formate
$csv = @'  
"Date";"Common-Name"  
"Dec 23 12:00:06 2029 GMT";"domain.tld"  
"Sat, 08 Apr 2023 11:35:03 +0200";"sub.domain.tld"  
"Tue Jan 06 09:57:23 CET 2026";"sub2.domain.tld"  
'@ | ConvertFrom-CSV -Delimiter ";"  

$csv = foreach($line in $csv){
    $d = [datetime]::MinValue
    if ([datetime]::TryParseExact($line.Date,[string[]]('MMM dd HH:mm:ss yyyy GMT','ddd, dd MMM yyyy HH:mm:ss zzz','ddd MMM dd HH:mm:ss CET yyyy'),[cultureinfo]'en','None',[ref]$d)){$line.Date = $d}  
    $line
}
$csv | sort Date
https://docs.microsoft.com/de-de/dotnet/standard/base-types/custom-date- ...
Member: lcer00
lcer00 Nov 11, 2021 at 12:18:51 (UTC)
Goto Top
Danke.
Zitat von @149569:

Dann nimm halt die Powershell und ergänze deine Formate
> $csv = @'  
> "Date";"Common-Name"  
> "Dec 23 12:00:06 2029 GMT";"domain.tld"  
> "Sat, 08 Apr 2023 11:35:03 +0200";"sub.domain.tld"  
> "Tue Jan 06 09:57:23 CET 2026";"sub2.domain.tld"  
> '@ | ConvertFrom-CSV -Delimiter ";"  
> 
> $csv = foreach($line in $csv){
>     $d = [datetime]::MinValue
>     if ([datetime]::TryParseExact($line.Date,[string[]]('MMM dd HH:mm:ss yyyy G\MT','ddd, dd MMM yyyy HH:mm:ss zzz','ddd MMM dd HH:mm:ss \C\E\T yyyy'),[cultureinfo]'en','None',[ref]$d)){$line.Date = $d}  
>     $line
> }
> $csv | sort Date
> 
Das würde passen und Powershell ist mir sympatischer als Excel.

TryParse und TryParseExact hatte ich irgendwo aus einem C## Projekt noch im Hinterkopf, hatte etwas (eingebautes) passendes für Excel gesucht. Wobei die .Net Methode ja auch in Excel-VBA faufen müsste.

Grüße

lcer
Mitglied: 149569
149569 Nov 11, 2021 updated at 15:21:01 (UTC)
Goto Top
Zitat von @lcer00:
Wobei die .Net Methode ja auch in Excel-VBA faufen müsste.
Nein, wenn du dir dafür ein COM-Wrapper bauen würdest dann ja. Du kannst natürlich auch per Regex was mit VBA bauen ist nur etwas mehr Tipparbeit aber auch kein Problem ...

Sub KonvertiereDatumswerte()
    Dim cell As Range, regex As Object, months As Variant, arrMap As Variant, arrMonthMap As Variant, _
    matches As Object, m As Integer, i As Integer, intMonth As Integer
    Set regex = CreateObject("vbscript.regexp"): regex.IgnoreCase = True  
    months = Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec")  
    regex.Pattern = "(([a-z]{3}) (\d{2}) (\d{2}:\d{2}:\d{2}) (\d{4}))|(([a-z]{3}), (\d{2}) ([a-z]{3}) (\d{4}) (\d{2}:\d{2}:\d{2}))|(([a-z]{3}) ([a-z]{3}) (\d{2}) (\d{2}:\d{2}:\d{2}) ([a-z]{3}) (\d{4}))"  
    arrMap = Array(Array(4, 2, 3), Array(9, 7, 10), Array(17, 14, 15))
    arrMonthMap = Array(1, 8, 13)
    
    With ActiveSheet
        For Each cell In .Range("A2:A" & .Cells(Rows.Count, "A").End(xlUp).Row)  
            Set matches = regex.Execute(cell.Value)
            If matches.Count > 0 Then
                For m = 0 To UBound(arrMap)
                    If matches(0).submatches(arrMonthMap(m)) <> "" Then  
                        For i = 0 To UBound(months)
                            If months(i) = matches(0).submatches(arrMonthMap(m)) Then
                                intMonth = i + 1
                                Exit For
                            End If
                        Next
                        cell.Value = CDate(matches(0).submatches(arrMap(m)(0)) & "-" & intMonth & "-" & matches(0).submatches(arrMap(m)(1)) & " " & matches(0).submatches(arrMap(m)(2)))  
                        Exit For
                    End If
                Next
            End If
        Next
        .Range("A:B").Sort Key1:=.Range("A1"), Order1:=xlAscending, Header:=xlYes  
    End With
End Sub

Vorher

screenshot

Nachher

screenshot
Member: erikro
erikro Nov 11, 2021 at 17:40:28 (UTC)
Goto Top
Zitat von @lcer00:
Andererseits gibt es Excel ja auch nur aus Gründen der Rückwärtskompatibilität zu Kugelschreiberlistenausfüllern. Kein Mensch braucht eine Tabellenkalkulationsoftware.

Doch, die Menschen, die damit rechnen wollen und Excel nicht als schlechteste aller Datenbanken nutzen. face-wink
Member: Lochkartenstanzer
Lochkartenstanzer Nov 11, 2021 at 17:52:01 (UTC)
Goto Top
Zitat von @erikro:

Zitat von @lcer00:
Andererseits gibt es Excel ja auch nur aus Gründen der Rückwärtskompatibilität zu Kugelschreiberlistenausfüllern. Kein Mensch braucht eine Tabellenkalkulationsoftware.

Doch, die Menschen, die damit rechnen wollen und Excel nicht als schlechteste aller Datenbanken nutzen. face-wink

Excel (oder eine beliebige Tabellenkalkulation) ist die einfachste Art eine Tabelle zu setzen/erzeugen. Von daher ist es nachvollziehbar, wenn sehr viele das dazu nutzen.

Das einzige was bei Excel stört, ist daß es versucht die Daten, die man reinschreibt selbständig zu interpretieren, statt auf das zu hören, was der Master an der Tastatur sagt.

lks