Wie erhält man, dass Excel Datumsfelder wie angezeigt speichert?

721
Wifi Test

Ich habe Daten mit Datum-Uhrzeit-Werten, die ich in ein anderes Format konvertieren muss. Ich habe eine Excel-Formel erstellt, die die Zeichenfolge in genau dem Format verkettet, das ich brauche. Ich habe derzeit die Spalte mit der Formel als TEXT formatiert.

Wenn ich die Daten jedoch in einer CSV-Datei speichere, besteht Excel darauf, den Zeitabschnitt von 20:22 auf 20:22 Uhr zu ändern.

Wie kann ich es wie angezeigt in einer CSV-Datei speichern?

0
Können Sie ein Beispiel für die Daten posten? Werte, die * als Datum in Excel interpretiert werden können, werden normalerweise auf diese Weise interpretiert. Das FORMATIEREN der Zellen ändert nichts an diesem Verhalten. Sie müssen die verketteten Werte so speichern, dass sie nicht als Datum interpretiert werden. Wenn Sie eine Beispieldatei oder einige Beispieldaten bereitstellen können, kann ich wahrscheinlich helfen. David Zemens vor 11 Jahren 0

2 Antworten auf die Frage

0
Julian Knight

Leider war der Umgang mit CSV in Excel immer sehr schlecht.

Die allgemein akzeptierte Lösung besteht darin, die CSV-Datei selbst mit VBA-Code zu erstellen. Auf diese Weise können Sie die Dinge genau so formatieren, wie Sie möchten, und Sie können die ziemlich dumme Sache, die Excel tut, stoppen, nämlich die Anführungszeichen um Felder optional zu machen und manchmal falsch zu stellen. Es gibt eine Reihe vernünftiger Beispiele für die Erstellung von CSV-Dateien im Internet und mehrere Add-Ins, die entsprechende Tools bereitstellen.

Hier ist ein einfacher Code für den Einstieg:

' Output a more consistant CSV file Public Sub OutputQuotedCSV() Const QSTR As String = """" Dim myRecord As Range Dim myField As Range Dim vFilename As Variant Dim nFileNum As Long Dim sOut As String  'Get a filename to save as vFilename = Application.GetSaveAsFilename(filefilter:="Microsoft CSV files,*.csv", _ title:="Save as CSV with fields in double quotes")  If vFilename = False Then Exit Sub 'User chose Cancel  nFileNum = FreeFile Open vFilename For Output As #nFileNum For Each myRecord In Range("A1:A" & Range("A" & Rows.Count).End(xlUp).Row) With myRecord For Each myField In Range(.Cells(1), Cells(.Row, 256).End(xlToLeft)) sOut = sOut & "," & QSTR & _ Replace(myField.Text, QSTR, QSTR & QSTR) & QSTR Next myField Print #nFileNum, Mid(sOut, 2) sOut = Empty End With Next myRecord Close #nFileNum End Sub 

Sie müssen einen Test für Datumsangaben hinzufügen und das Format entsprechend formatieren.

0
pnuts

In Excel 2007 wird das erforderliche Format beibehalten. Falls erforderlich, wird jedoch eine tatsächlich A1als solche gespeicherte Zeit (z. B. 0,848611 für 20:22) "konvertiert", da unten möglicherweise Fehler auftreten. [Ich kann den Test nicht vollständig ausführen, da ich die Symptome nicht sehe Sie sind!]:

=IF(HOUR(A1)<10,"0"&HOUR(A1)&":"&MINUTE(A1),HOUR(A1)&":"&MINUTE(A1))