Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Datum und Uhrzeit trennen

Datum und Uhrzeit trennen
07.06.2016 20:26:58
Müller

Hallo liebe Experten,
mein derzeitiges Problem wurde schon häufiger beschrieben habe aber leider nach 2tägiger suche immernoch keine optimale Lösung gefunden.
Das Problem ist, dass ich Uhrzeit und Datum welche in Spalte A stehen trennen möchte.
Anfangs steht in Spalte dd.mm.yyyy hh:mm:ss ich hätte gerne das in Spalte A dd.mm.yy steht und in Spalte B hh:mm und die Sekunden sollten aufgerundet werden bzw. wegfallen.
Das Problem mit dem Datum hab ich schon in den Griff bekommen.
Der Makro dafür lautet wie folgt
Range(Cells(2, 1), Cells(ActiveSheet.Range("B999999").End(xlUp).Row, 1)).TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
ConsecutiveDelimiter:=True, Space:=True, FieldInfo _
:=Array(Array(0, 1), Array(1, 9), Array(2, 9))
Range(Cells(2, 1), Cells(ActiveSheet.Range("A999999").End(xlUp).Row, 1)).NumberFormat = "DD.MM.YYYY"
Problem bei der Uhrzeit ist, dass wenn man es mit Text in Spalten macht immer Am und PM angefügt wird, da der Makro bei Makro aufzeichnen (auf Deutsch) aufgezeichnet wird aber dann auf Englisch in VBA verarbeitet wird.
Ich bin leider mit Array sind so vertraut und kann deshalb den oberen Makro nicht anpassen, dass er z.B. in Spalte B nur die Uhrzeit stehen lässt und das Datum rauslöscht.
Meine Derzeitige Lösung sieht wie folgt aus.
'Sorgt dafür das nur die Uhrzeit in der Spalte Uhrzeit steht (dauert aber recht lange)
For Each Zelle In Selection
Range(Zelle.Address).Offset(0, 0) = Zelle.Value - Int(Zelle.Value)
Range(Zelle.Address).Offset(0, 0).NumberFormat = "hh:mm"
Next Zelle
'Die Sekunden werden bei der Spalte Uhrzeit abgerundet
Range(Cells(2, 2), Cells(ActiveSheet.Range("B999999").End(xlUp).Row, 2)).Select
For Each Zelle In Selection
Zelle.Value = TimeSerial(Hour(Zelle.Value), Minute(Zelle.Value), 0)
Next
Problem daran ist das bei über 200.000 zu trennenden Uhrzeiten der Makro über 2 Minuten braucht, dagegen das trennen mit den Arrays nur wenige Sekundne.
Eine reine Formatierung der Zellen bringt mir leider auch wenig, da ich mit diesen noch in Pivot weiterarbeiten muss. Dort kann es Probleme geben wenn in den noch Zellen das Datum und die Uhrzeit trin steht (wenn auch nicht sichtbar in den einzelnen Zellen).
Danke schonmal im Voraus für eure Vorschläge oder Lösungsansätze
Gruß
Chris

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datum und Uhrzeit trennen
07.06.2016 21:02:40
Christoph Zahn
Hallo Chris,
bin auch nicht der große VBA Kenner. Vielleicht hilft dir das hier weiter als Ansatz.
Dauert bei mir ca. 10 Sekunden für 200.000 Zeiten.
Sub zeit_trennen()
Dim Datum As Date
Dim uhrzeit As Date
Dim min As Date
Dim fertig As String
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
Range("F:F").NumberFormat = "@"
min = Format("00:01", "hh:m")
lr = Cells(Rows.Count, "A").End(xlUp).Row
For n = 1 To lr
Datum = Format(Left(Cells(n, 1), 10), "dd.mm.yyyy")
uhrzeit = Mid(Cells(n, 1), 12, 5)
Cells(n, 3).Value = Datum
uhrzeit = uhrzeit + min
fertig = Left(uhrzeit, 5)
Cells(n, 6).Value = Format(fertig, "@")
Next n
Range("E:E").NumberFormat = "@"
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
End With
End Sub
Gruß
Christoph

Anzeige
AW: Datum und Uhrzeit trennen
07.06.2016 21:06:29
Müller
Ja der Makro an sich funktioniert zwar, aber er ist eben extrem Langsam.
Da erst aus jeder Zelle etwas der Int genommen wird und danach noch gerundet werden muss.
Ich habe gehofft, das es wie beim Datum mit Array´s möglich ist, da es beim Datum eben nur sehr kurz Dauert die Uhrzeit zu entfernen. (Bei dem Makro für das Datum)

AW: Datum und Uhrzeit trennen
07.06.2016 21:25:55
RPP63
Hi!
Warum schreibst Du nicht einfach folgende Formeln per VBA in Spalte A und B:
=Ganzzahl(A1)
=Rest(A1;1)
und formatierst sie entsprechend?
(erst testen, dann meckern)
Gruss Ralf

AW: Datum und Uhrzeit trennen
07.06.2016 21:35:31
Müller
Hallo zusammen,
ne sorry das ist dann falsch rüber gekommen.
Ich bin super Dankbar für jede Anregung, welcher mir hilft meinen Makro zu verbessern bzw. schneller zu machen.
Das mit dem Rest ist eine gute Möglichkeit danke dir.
Gruß
Chris

Anzeige
Meckern
07.06.2016 22:09:24
RPP63
Mit meckern wollte ich einen Schnappreflex verhindern.
Das Eintragen einer Formel in einen BEREICH ist erheblich schneller als eine For...Each-Schleife und erübrigt iaR eine Array-Konstruktion.
Gruß Ralf

AW: Meckern
07.06.2016 22:17:32
Müller
Hallo Ralf,
danke dir.
Ich merks gerade, dass es echt deutlich schneller geht.
Ich werde jetzt mal versuchen den Makro so zu basteln mit wie es vorhin beschrieben wurde.
Das Runden der ss auf 00 dauert bei mir dann noch die meiste Zeit.
Aber du hast mir schon sehr weiter geholfen danke.
Gruß
Chris

360 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige