Anzeige
Archiv - Navigation
1296to1300
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datumsformat wiederherstellen

Datumsformat wiederherstellen
29.01.2013 16:32:44
chandler
Hallo Forum,
beim imporieren einer csv Datei werden die Zeichen Punkt durch Komma ersetzt.
Leider wird auch die Spalte mit Datum versehen mit den Komma’s, so das ich
mit dem nachfolgenden Makro die Komma's durch Punkte ersetze.
Wenn mit SVERWEIS in der Tabelle weiterhin gesucht wird, funktioniert das Datum leider nicht mehr, da die Spalte kein echtes Datumformat hat.
Meine Frage: Wie kann ich das Problem lösen, dass die Spalte mit Datum als Datum formatiert wird und ich weiter mit SVERWEIS rechnen kann?
Sub punkt()
Range("A2:A40000").Select
Selection.Replace What:=",", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False
Cells.Find(What:=".", After:=ActiveCell, LookIn:=xlFormulas, LookAt:= _
xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False) _
.Activate
End Sub
Vielen Dank im Voraus. chandler

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsformat wiederherstellen
29.01.2013 17:14:56
Daniel
Hi
importiere mit der Importfunktion DATEN - EXTERNE DATEN ABRUFEN - AUS TEXT.
dort kannst du im Schritt 3 des Assistententen einstellen, ob
- die Zahlen ein Komma oder einen Punkt als Dezimaltrennzeichen haben (unter weitere)
- welche Spalten ein Datum haben und in welchem Format die Datumswerte vorliegen.
dann werden die Werte korrekt als Zahl oder Datum in die Exceltabelle übernommen, ohne das du nachträglich noch was ersetzen musst.
Gruß Daniel

AW: Datumsformat wiederherstellen
29.01.2013 18:45:00
chandler
Hallo Daniel,
wenn es nur ein dutzend Dateien wären, dann hätte ich das auch so getan.
Ich importiere aus eimem Verzeichnis Tausende csv Dateien mittels Makro, daher eignet sich das Verfahren nur bedingt.
Ich habe gestern diesbezüglich eine Frage gestellt und ein Makro bekommen, das gut funktioniert.
Wie man aber in der Spalte A das Datumformat beibehält weiß ich leider nicht.
vielleich hat jemand eine Idee und kann dabei helfen. Hier das Makro:
Sub csvToxls()
Dim sFile As String, sPath As String, iFree As Integer
Dim arrCSV, arrTmp, arrXLS(), i As Long, j As Integer, n As Long
sPath = "D:\Test\"
sFile = Dir(sPath & "*.csv")
Application.ScreenUpdating = False
Do While Len(sFile)
iFree = FreeFile
Open sPath & sFile For Input As iFree
arrCSV = Split(Input(LOF(iFree), iFree), vbCrLf)
Close iFree
For i = 0 To UBound(arrCSV)
arrTmp = Split(arrCSV(i), ";")
n = Application.Max(n, UBound(arrTmp))
Next
ReDim arrXLS(1 To UBound(arrCSV) + 1, 1 To n + 1)
For i = 0 To UBound(arrCSV)
arrTmp = Split(arrCSV(i), ";")
For j = 0 To UBound(arrTmp)
arrXLS(i + 1, j + 1) = arrTmp(j)
Next
Next
With Workbooks.Add
.Sheets(1).Cells(1, 1).Resize(UBound(arrXLS), UBound(arrXLS, 2)) = arrXLS
'      .SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4), 51
.SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4) & ".xls", xlWorkbookNormal
.Close
End With
sFile = Dir
Call punkt
Loop
End Sub
Vielen Dank. chandler

Anzeige
AW: Datumsformat wiederherstellen
29.01.2013 18:59:47
Daniel
Hi
dazu müsste man wissen, wie die Daten konket aussehen.
kannst du mal die Datei in dem Zustand hochladen, bevor du sie speichern willst?
sollte das Makro PUNKT nicht ausgeführt werden bevor du die Datei speicherst und schließst?
derzeit wird das Makro Punkt ja in der Datei ausgeführt, in der das Makro steht und nicht in der, wo du die Daten reinkopierst.
warum führst du das ersetzen nicht schon in der Schleife aus, in der du das Array zusammenstellst?
      arrXLS(i + 1, 1) = Replace(arrTmp(0), ",", ".")
For j = 1 To UBound(arrTmp)
arrXLS(i + 1, j + 1) = arrTmp(j)
Next
Gruß Daniel

Anzeige
AW: Datumsformat wiederherstellen
29.01.2013 20:15:21
Daniel
Hi
ich würde es über die Importfunktion machen.
geht auch als Makro für tausende von Files wunderbar.
falls das bei dir nicht geht, wüsste ich gerne, warum:
Sub csvToxls()
Dim sFile As String, sPath As String, iFree As Integer
Dim arrCSV, arrTmp, arrXLS(), i As Long, j As Integer, n As Long
sPath = "D:\Test\"
sFile = Dir(sPath & "*.csv")
Application.ScreenUpdating = False
Do While Len(sFile)
Workbooks.Add
With ActiveSheet.QueryTables.Add(Connection:="TEXT;" & sPath & sFile, Destination:= _
Range("$A$1"))
.Name = "xxx"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.RefreshStyle = xlInsertDeleteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.TextFilePromptOnRefresh = False
.TextFilePlatform = 1252
.TextFileStartRow = 1
.TextFileParseType = xlDelimited
.TextFileTextQualifier = xlTextQualifierDoubleQuote
.TextFileConsecutiveDelimiter = False
.TextFileTabDelimiter = False
.TextFileSemicolonDelimiter = True
.TextFileCommaDelimiter = False
.TextFileSpaceDelimiter = False
.TextFileColumnDataTypes = Array(4, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)
.TextFileDecimalSeparator = "."
.TextFileThousandsSeparator = ","
.TextFileTrailingMinusNumbers = True
.Refresh BackgroundQuery:=False
.Delete
End With
ActiveWorkbook.SaveAs sPath & Mid(sFile, 1, Len(sFile) - 4) & ".xls", xlWorkbookNormal
ActiveWorkbook.Close
sFile = Dir
Loop
End Sub

Gruß Daniel

Anzeige
AW: Datumsformat wiederherstellen
29.01.2013 20:24:14
chandler
Hallo Daniel,
na bitte - wer sagt´s. Wunderbar!
Vielen, vielen Dank. Grüße chandler

AW: Datumsformat wiederherstellen
29.01.2013 20:32:06
Daniel
Hi
weißnicht, es war deine Idee, daß die Importfunktion als Makro für viele Dateien nicht tauglich ist.
Gruß Daniel

AW: Datumsformat wiederherstellen
29.01.2013 21:02:52
chandler
Hi Daniel,
in der Tat, das war mir nicht so klar. Vielen Dank. Grüße chandler

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige