29.04.2018, 20:07
Hallo zusammen,
ich schon wieder mit einer Frage.
Ich bekomme aus verschiedenen Quellen u.a. Uhrzeiten die in einer Tabelle in einer Spalte abgelegt werden sollen.
Nur sind die Quellzellen mal als "Standard" mal als "Text" und mal als "Uhrzeit" formatiert.
Für die Weiterverarbeitung benötige ich aber nur das Textformat.
Wie kann man jetzt in der Zielspalte alle Zellen durchlaufen, den Wert lesen, die Zelle als Text formatieren und den Zeitwert (z.B. 11:00) ohne den Sekundenanteil, falls vorhanden, wieder in die Zelle schreiben?
Habe schon mal gegoogelt aber nix passendes gefunden.
Ähnliches Problem habe ich mit Datumseinträgen die in Form von So. 29.04.2018 daherkommen.
Um die Datumswerte nun filtern/sortieren zu können, müssen die ersten 4 Zeichen abgeschnitten werden und die Spalte als "Text in Spalten" formatiert werden.
Da ich hier auch hunderte von Daten bekomme würde ich das auch gerne mittels Makro abwickeln.
Habe das mal mit drei kleinen Makros ausprobiert, verbunden mit der Frage ob das nicht einfacher, schlanker geht?
ich schon wieder mit einer Frage.
Ich bekomme aus verschiedenen Quellen u.a. Uhrzeiten die in einer Tabelle in einer Spalte abgelegt werden sollen.
Nur sind die Quellzellen mal als "Standard" mal als "Text" und mal als "Uhrzeit" formatiert.
Für die Weiterverarbeitung benötige ich aber nur das Textformat.
Wie kann man jetzt in der Zielspalte alle Zellen durchlaufen, den Wert lesen, die Zelle als Text formatieren und den Zeitwert (z.B. 11:00) ohne den Sekundenanteil, falls vorhanden, wieder in die Zelle schreiben?
Habe schon mal gegoogelt aber nix passendes gefunden.
Ähnliches Problem habe ich mit Datumseinträgen die in Form von So. 29.04.2018 daherkommen.
Um die Datumswerte nun filtern/sortieren zu können, müssen die ersten 4 Zeichen abgeschnitten werden und die Spalte als "Text in Spalten" formatiert werden.
Da ich hier auch hunderte von Daten bekomme würde ich das auch gerne mittels Makro abwickeln.
Habe das mal mit drei kleinen Makros ausprobiert, verbunden mit der Frage ob das nicht einfacher, schlanker geht?
Code:
'Löscht vorgegebene Anzahl von Zeichen (von links)
Sub Zeichen_löschen()
Dim rng As Range
Set rng = Range("B4:B" & Cells(Rows.Count, "B").End(xlUp).Row)
Dim Zelle As Range
For Each Zelle In rng.Cells
Zelle = Right(Zelle, Len(Zelle) - 4)
Next Zelle
End Sub
'Formatiert Text in Spalten mit Datumseinträgen
Sub Datumstext_Formatieren()
letztezeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
For lngZeile = 4 To letztezeile
Cells(lngZeile, 2).TextToColumns Destination:=Range("B4"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True
Next
End Sub
'Sortiert Datum absteigend
Sub DatumSortieren()
letztezeile = ActiveSheet.Cells(Rows.Count, 2).End(xlUp).Row
ActiveSheet.AutoFilter.Sort.SortFields.Clear
ActiveSheet.AutoFilter.Sort. _
SortFields.Add Key:=Range("B3:B" & letztezeile), SortOn:=xlSortOnValues, Order:= _
xlAscending, DataOption:=xlSortTextAsNumbers
With ActiveSheet.AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End Sub