Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1412to1416
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

Datumsumstellung per VBA

Datumsumstellung per VBA
04.03.2015 15:24:40
Daniel
Hallo liebe Leute,
ich bin ein absolutes Greenhorn in VBA und hoffe inständig, dass Ihr mir helfen könnt (ich denke für euch ein klacks..für mich schon 7h verlorene Zeit...)
Ich habe ein Exceldatei, die per makro, Log-daten aus einer CSV liest.
Die log-Daten sind per Komatas getrennt und werden so in die jeweiligen Spalten verteilt.
Danach werden diese Werte auf weiteren Sheets ausgewertert usw.
Blöderweise haben jetzt 30 CSV-Dateien (mit unzähligen Datensätzen) eine vertauschte Datumsformatierung! Folge: die weitere grafische Auswertung der Daten funktioniert nicht mehr!
Die Datumsformatierung liegt folgendermassen vor: 15-01-29 23:01:02
Sie sollte aber so ausehen: 29-01-15 23:01:02
Der Tag und das Jahr sind vertauscht. Dadurch ergibt sich natürlich das falsche Datum und der eingebaute Vergleich bringgt dann natürlich die Fehlermeldung.
Ich brauche jetzt also einen entsprechenden Code, der das Datum in den Zellen wieder richtig umstellt.
Kann mir irgendwer dabei helfen?!?
Ich wäre euch super dankbar
Beste Grüsse
Daniel

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsumstellung per VBA
04.03.2015 15:38:10
Klexy
Ist die Uhrzeit wichtig?
Ist die Zelle als Datum formatiert, oder ist es eine Zeichenkette im Text-Format? Mit anderen Worten: wenn du in die Zelle klickst, sieht es in der Bearbeitungszeile identisch aus (15-01-29 23:01:02) oder etwa so: 15.01.2029 23:01:02 ?

Datumsumstellung per VBA
04.03.2015 15:43:46
Daniel
Hallo Klexy,
vielen Dank für Deine Antwort.
Die Zeichenkette hat keine Formatierung hinterlegt,-sie ist genau so in der Bearbeitungszeile zu sehen wie in der Zelle selbst.
Das gilt für die CSV wie auch für das excel-file :/

AW: Datumsumstellung per VBA
04.03.2015 15:59:05
Klexy
Muss die Uhrzeit bleiben oder kann man die abschneiden?

Anzeige
So vielleicht...
04.03.2015 16:04:04
steffen
angenommen der Ausgangswert steht in A1 15-01-29 23:01:02
Jahr = Left(Cells(1, 1), 2)
Mon = Mid(Cells(1, 1), 4, 2)
Tag = Mid(Cells(1, 1), 7, 2)
Zeit = Mid(Cells(1, 1), 10, 8)
Cells(1, 1) = Tag & "-" & Mon & "-" & Jahr & " " & Zeit
dann steht in nun in A1 29-01-15 23:01:02
(Das ist jedoch jetzt Text)

AW: Datumsumstellung per VBA
04.03.2015 16:05:47
Klexy
Egal, machen wir's mit der Uhrzeit, ansonsten löscht du einfach den entsprechenden Teil (im Beispiel fett):
Sub Tag_und_Jahr_vertauschen()
Dim kRange As Range
Dim NeuDatum As String
Set kRange = Range(ActiveCell, Cells(ActiveSheet.UsedRange.Rows.Count, ActiveCell.Column))
For Each Cell In kRange
Cell.Select
NeuDatum = Mid(Cell.Value, 7, 2) & Mid(Cell.Value, 3, 3) & "-" & Left(Cell.Value, 2) &  _
Right(Cell.Value, 9)
    Selection.Formula = NeuDatum
Next Cell
End Sub
Du musst in die oberste Zelle mit Datum klicken und dann das Makro laufen lassen. Es läuft automatisch bis zur letzten Zeile in dieser Spalte durch.

Anzeige
AW: Datumsumstellung per VBA
04.03.2015 16:06:09
yummi
Hallo Daniel,
kannst Du z.b. so machen Angenommen in A1 steht dein Wert den du Ändern willst
D1=TEIL(A1;1;2)
E1=TEIL(A1;7;2)
F1=E1&TEIL(A1;3;4)&D1&TEIL(A1;9;9)
Danach noch Spalte F nach A kopieren und fertig
Gruß
yummi
PS: Die Formelcracks bekommen das bestimmt auch noch kürzer hin

VBA wird normalerweise auch nicht benötigt, ...
04.03.2015 16:12:34
Luc:-?
…Daniel;
du musst nur sicherstellen, dass die Daten als Text importiert und nicht automatisch in ein Datum umgewandelt wdn, denn das Problem liegt in der 2stelligen Jahreszahl begründet, nicht in der Reihenfolge, denn die entspricht dem internationalen Standard. Anschließend könntest du in einer Hilfsspalte die Umwandlung in ein echtes Datum + Uhrzeit mit einer simplen Fml vornehmen: =--(20&A1)
Anschließend muss die Zelle nur noch entsprechend formatiert wdn.
Du kannst natürlich die Fml-Teile auch um die Originaldaten herumlegen: `=--(20&"´ und `")´
Oder du korrigierst vor dem Import die CSV durch Vorsetzen einer 20 vor jeden Datum-Zeit-Wert.
Gruß, Luc :-?
Besser informiert mit …

Anzeige
Datumsumstellung per VBA
05.03.2015 07:53:23
Daniel
@ Klexy, Luc; yummi, entschuldigt bitte meine späte Antwort.
Das sieht sehr gut aus! Vielen vielen Dank schon mal!
Das blöde ist, ich habe vergessen zu sagen, dass diese Log-daten in ein Sheet namens "temp-data" gelesen werden, und in Zellen auf ihre Aktualität verglichen werden.
Danach werden die Zelleninhalte in andere sheets verteilt und damit in "temp-data" gelöscht!
Somit kommt nur ein macrocode in Frage, weil in der Zeit nach meinem Programmier-Verständnis keine Excelformel greifen wird :/
Das Problem ist jetzt, ich weiss nicht wie ich diesen Absatz von dir Klexy richtig einbinden kann, damit alle Zellen richtig umgestellt werden bevor der Vergleich gemacht wird...
Ich habe mal selber was zusammengesammelt:
With ActivSheet
.Range ("C17").FormulaLocal = "TEXT(D17;"JJ.MM.TT hh:mm:ss")"
Dim llast As Long
Dim lrow As Long
With Worksheets
llast = .Cells(Rows.Count, 3).End(xlUp).Row
For lrow = 2 To llast
'Range ("C17:C" & llast).FormulaLocal = TEXT("D17:D"&1last;"JJ.MM.TT hh:mm:ss")
Next lrow
End With
Ich habe es versucht wie als Excelformel zuschreiben!Ich weiss...
Da Sieht das von der Klexy-Vorschlag schon brauchbarer aus...
Jetzt bin ich mir halt auch nicht sicher ob ich jetzt das nochmal extra als sub oder nur mit der wiht-Funktion laufen lassen kann?!?
Beste Grüssse

Anzeige
AW: Datumsumstellung per VBA
05.03.2015 10:01:07
Klexy
Lass das Makro in der Ausgangsdatei laufen, egal wie die heißt. Speicher diese danach wieder ab.
Egal, was du nachher damit machst, hast du jetzt eine korrekte Datenbasis für Aktualitätsprüfung und was auch immer.

Und warum setzt du nicht an der Basis an, ...
05.03.2015 11:43:31
Luc:-?
…Daniel?
Wenn du es nicht schaffst, die Datumswerte als Text zu importieren, solltest du die .csv-Datei ändern! Dürfte doch wohl ein Klacks sein, da überall 'ne 20 vorzusetzen!
Da wurde nun schon vor 16 Jahren der Weltuntergang wg 2stelliger Jahreszahlen befürchtet, und heute gibt's immer noch Pgmm, die so etwas verwenden! Wie unbelehrbar blöd muss ein Pgmmierer sein, der immer noch so etwas macht…?! Der internationale Standard sieht 4stellige Jahreszahlen vor, dann kann Xl auch lokal/national höchstens noch in einigen Fällen Tag und Monat vertauschen, wenn ihre Reihenfolge nicht dem internationalen Standard (YYYY-MM-DD bzw DD-MM-YYYY) folgt, was hier ja nicht der Fall ist! Anderenfalls geht Xl von lokal üblicher Reihenfolge aus.
Luc :-?
Anzeige

145 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige