Datumswerte in Excel statt Zahlen verhindern wie?

Dieser Thread ist Teil einer Diskussion zu einem Artikel:  Zum News-Artikel gehen

Galapapagos

Stammgast
Hallo
Ein Kollege und ich bekommen die gleiche csv-Datei zugestellt. Bei mir werden die Preise korrekt in Zahlen widergegeben (Spalten E / I / J / L / M / N / O) gem. Anlage Zahlen-Zahlen.
Bei meinem Kollegen hingegen kommen einzelne Zahlen als Datumswerte raus. So wird aus CHF19.10 der 19.Januar. Wir haben dann die Spalte formatiert als Zahl, worauf dann der 19.Jan eine Zahl von etwas über 44'000 ausgibt. Bei den Einstellungen konnte ich nichts dazu finden. Er benutzt auch Excel von MS. Seine Werte gem. Anlage Zahlen-Datum ersichtlich.

Weiss jemand von euch, wie wir das umstellen können? Da es sich um tägliche Auswertungen handelt, würden wir es wenn möglich nicht täglich manuell anpassen müssen.

Für gute Hinweise sind wir euch sehr dankbar.
Besten Dank im Voraus und Gruss
Reto
 

Anhänge

  • Zahlen-Zahlen.jpg
    Zahlen-Zahlen.jpg
    107,1 KB · Aufrufe: 8
  • Zahlen-Datum.JPG
    Zahlen-Datum.JPG
    159,8 KB · Aufrufe: 8

nochEinAndreas

Stammgast
Hallo Reto,
es sieht so aus, als hättest du als Dezimaltrenner den Punkt eingestellt. In den CSV-Dateien ist es vermutlich auch der Punkt. Deswegen funktioniert es bei dir.
Der Dezimaltrenner bei deinem Kollegen scheint das Komma zu sein, zu sehen z.B. in Spalte R. Excel kann die Zahlen mit Punkten aus der CSV-Datei nicht als solche interpretieren, und versucht es anders:
Wenn die Zahlen vor dem Punkt ein Tag des Monats sein könnte und die Zahlen dahinter ein Monat, dann interpretiert es z.B. 6.7 als den 6. Juli.
Wenn die Zahlen vor und hinter dem Punkt kein Datum ergeben, dann wird das Ganze als Text interpretiert, z.B. 60.57 in Spalte L. Das es ein Text ist und keine Zahl sieht man auch daran, dass es linksbündig steht.
Eine Lösung wäre also, dass dein Kollege vor dem Einlesen der CSV-Datei seinen Dezimaltrenner auf Punkt stellt. Nach dem Einlesen kann er ihn wieder auf Komma zurück stellen. Excel formatiert dann Zahlen richtig um.

Gruß, Andreas
 

nochEinAndreas

Stammgast
Hallo Reto,

hier noch ein kleiner Makro, der deinem Kollegen das Leben noch etwas erleichtern kann. Er kann den Code z.B. in ein Modul der PERSONAL.XLSB Datei kopieren. In den Optionen zu dem Makro kann er festlegen, dass er mit Strg-o gestartet werden soll.
Wenn der Makro gestartet wird, erscheint ein Fenster, in dem die CSV-Datei ausgewählt werden kann. Der Makro stellt dann den Dezimaltrenner auf Punkt um und öffnet die Datei. Wenn sie geöffnet ist, stellt der Makro den alten Dezimaltrenner wieder ein.

Code:
Sub csvÖffnen()
    Dim pfad As String
    Dim dezTrenn As String
    Dim vomSystem As Boolean
    
    With Application
    
        ' Der Dialog für die Datei-Auswahl wird vorbereitet und angezeigt:
        With .FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = False           ' Jeweils nur eine Datei auswählbar
            .Filters.Clear                      ' Alle alten Dateifilter löschen
            .Filters.Add "CSV-Dateien", "*.csv" ' Nur CSV-Dateien anzeigen
            .Title = "CSV-Dateien öffnen"       ' Fenstertitel festlegen
            If .Show = False Then Exit Sub  ' Wenn der Dialog abgeroche wird, Makro beenden
            pfad = .SelectedItems(1)        ' Die ausgewählte Datei wird festgehalten
        End With
        
        ' Die Einstellungen für die Trennzeichen in Excel werden fastgehalten:
        dezTrenn = .International(xlDecimalSeparator)   ' Dezimaltrenner festhalten
        vomSystem = .UseSystemSeparators                ' Übernahme der Trennzeichen vom System?
        
        ' Trennzeichen neu setzen:
        .DecimalSeparator = "."         ' Dezimaltrenner auf Punkt setezen
        .UseSystemSeparators = False    ' Trennzeichen nicht vom System übernehmen
        
        ' Die ausgewählte CSV-Datei öffnen
        Workbooks.Open Filename:=pfad, Local:=True
        
        ' Trennzeichen wieder auf die alten Werte setzen:
        .DecimalSeparator = dezTrenn
        .UseSystemSeparators = vomSystem
    End With
End Sub

Gruß, Andreas
 
Oben