Excel Datumsformatierung aus csv Datei
#1
Hallo zusammen.

Ich bin wieder am verzweifeln. Es steht überall so einfach geschrieben, nur funktionieren will es nicht.
Ich bekomme aus meinem "Abrechnungsprogramm" eine CSV Datei. Diese wandel ich in xlsx um.
Nun möchte ich die Spalte "Belegdatum" etwas leserlicher machen, das die Zahlen als Datum dargestellt werden.
Ausgang ist z.B. 01102024 und es soll dargestellt werden als 01.10.2024.
Wenn ich es als Datum formatiere kommt nix dabei raus. Nur #####. Schreibe ich bei der Formatierung unter Benutzerdefiniert 00.00.000 kommt auch nichts bei raus. Einige Zellen werden ignoriert, sicher die mit der führenden 0 und die anderen werden getrennt 30.102.024. Warum auch immer.

Hat irgendwer eine Idee was ich noch probieren kann ohne es manuell machen zu müssen?

Ich habe mal die csv und die konvertierte xlsx hochgeladen.

Liebe Grüße aus dem Norden

Bernd


Angehängte Dateien
.csv   Test Forum.csv (Größe: 8,98 KB / Downloads: 15)
.xlsx   Test Forum.xlsx (Größe: 11,51 KB / Downloads: 10)
Antworten Top
#2
Wenn Excel in einer als Datum formatierten Zelle "#####" anzeigt, ist die Spalte nicht breit genug.

Ausserdem ist "16102024" kein Datum, es ist entweder eine große Zahl oder Text. Wo sind die Punkte?
Dein "Abrechnungsprogramm" liefert Werte, die du erst in Datum konvertieren musst.

Und zwar z.B. mit so einer Formel:

.xlsx   Test Forum(1).xlsx (Größe: 12,36 KB / Downloads: 6)
[-] Folgende(r) 1 Nutzer sagt Danke an oee für diesen Beitrag:
  • badboy-72
Antworten Top
#3
Hallo,

dieser kleine VBA Code wandelt die Zahl in ein Datum:

Code:
Sub F_en()
Dim i As Integer, Tag As Integer, Mon As Integer, Jhr As Integer

For i = 2 To Cells(Rows.Count, "J").End(xlUp).Row
    Tag = Left(Cells(i, "J"), 2)
    Mon = Mid(Cells(i, "J"), 3, 2)
    Jhr = Right(Cells(i, "J"), 4)
    
    Cells(i, "K") = DateSerial(Jhr, Mon, Tag)
Next i
End Sub

mfg
[-] Folgende(r) 1 Nutzer sagt Danke an Fennek für diesen Beitrag:
  • badboy-72
Antworten Top
#4
(31.10.2024, 14:41)oee schrieb: Wenn Excel in einer als Datum formatierten Zelle "#####" anzeigt, ist die Spalte nicht breit genug.

Ausserdem ist "16102024" kein Datum, es ist entweder eine große Zahl oder Text. Wo sind die Punkte?
Dein "Abrechnungsprogramm" liefert Werte, die du erst in Datum konvertieren musst.

Und zwar z.B. mit so einer Formel:

oee, also die Spalte kann ich dann groß ziehen wie ich will, es ändert nichts an der Ausgabe der #######. 
Aber du hast recht, 16102024 ist kein Datum. Es wird so aus der csv Datei geliefert. Normalerweise wird alles mit Datev weiter verarbeitet, wenn man selbst bucht oder eben der Steuerberater. Mein Steuerberater arbeitet nicht mit Datev, kann die Daten aber lesen. Ich brauche die Daten nur zur Übersicht und zum prüfen ob der Zahlungseingang erfolgt ist. Bisher bei mir noch manuell. Das wird sich irgendwann erledigen. Bis dahin wollte ich nur eine einfache Möglichkeit das wenigstens das Datum ordentlich angezeigt wird. 
Deine Lösung ist das eigentlich super. Damit komme ich klar und kann das verwenden. Recht völlig aus.

(31.10.2024, 14:54)Fennek schrieb: Hallo,

dieser kleine VBA Code wandelt die Zahl in ein Datum:

Code:
Sub F_en()
Dim i As Integer, Tag As Integer, Mon As Integer, Jhr As Integer

For i = 2 To Cells(Rows.Count, "J").End(xlUp).Row
    Tag = Left(Cells(i, "J"), 2)
    Mon = Mid(Cells(i, "J"), 3, 2)
    Jhr = Right(Cells(i, "J"), 4)
   
    Cells(i, "K") = DateSerial(Jhr, Mon, Tag)
Next i
End Sub

mfg
Fenneck, der Code funktioniert auch. Ich teste mal welche beiden Versionen auf Dauer für mich besser geeignet sind.

Ich bin sehr dankbar für diese beiden Lösungen. 1000 Dank dafür, ich weiß das sehr zu schätzen.  100
Antworten Top
#5
Excel 2016 hat PowerQuery integriert. Im PQ Editor eine benutzerdefinierte Spalte anlegen mit

=Date.FromText([Belegdatum], [Format="ddMMyyyy", Culture="de-DE"])

die alte Spalte anschließend entfernen.
Cadmus
[-] Folgende(r) 1 Nutzer sagt Danke an Cadmus für diesen Beitrag:
  • Jockel
Antworten Top
#6
Hallo,

anstatt den String zu zerlegen, könnte man diesen auch entsprechend formatieren und dann in ein Datum konvertieren.

Beispiel im Direktfenster:
Code:
? CDate(Format("01102024", "@@.@@.@@@@"))
Antworten Top
#7
Moin!
Geht auch per Formel ohne LINKS, TEIL und RECHTS.
Man muss den Datumstrenner Punkt halt mittels Backslash maskieren:

FG
190110202401.10.2024

ZelleFormatWert
G19TT.MM.JJJJ01.10.2024

ZelleFormel
G19=--TEXT(F19;"00\.00\.0000")

Gruß Ralf
Gib einem Mann einen Fisch und du ernährst ihn für einen Tag. 
Lehre einen Mann zu fischen und du ernährst ihn für sein Leben. (Konfuzius)
[-] Folgende(r) 1 Nutzer sagt Danke an RPP63 für diesen Beitrag:
  • Jockel
Antworten Top
#8
Wenn ich eine .csv importiere, dann ist aus meiner Sicht, aktuell, Power Query die mit Abstand beste Methode. Ich habe ein formelfreies Ergebnis, kann sämtliche Transformationsschritte, von denen die meisten erklickbar sind, in der Abfrage durchführen und die Quelle mittels Parameter dynamisch gestalten.
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • derHoepp
Antworten Top
#9
Zu der Datei, die ich übersehen hatte, anbei eine PQ-Lösng.


Angehängte Dateien
.xlsx   cef - Datumsformatierung aus csv Datei (PQ).xlsx (Größe: 20,96 KB / Downloads: 8)
[-] Folgende(r) 1 Nutzer sagt Danke an ws-53 für diesen Beitrag:
  • Jockel
Antworten Top
#10
Hallo WS-53,

hier mal Deine PQ-Lösung, aber mit dem umgesetzten Tipp von Cadmus.

Gruß von Luschi
aus klein-Paris


Angehängte Dateien
.xlsx   cef - Datumsformatierung aus csv Datei (PQ)_1.xlsx (Größe: 22,17 KB / Downloads: 5)
[-] Folgende(r) 2 Nutzer sagen Danke an Luschi für diesen Beitrag:
  • ws-53, schauan
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste