Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Datumsformat wird nicht erkannt

Forumthread: Datumsformat wird nicht erkannt

Datumsformat wird nicht erkannt
09.11.2024 11:14:33
GäbiBu
Hallo zusammen,
ich habe eine Excel-Tabelle in der in der Spalte G über >40.000 Zeilen Datums stehen. Diese werden - auch wenn ich über formatieren -> in Datumsformat tt.mm.jjjj - formatiere, nicht erkannt.
Ziel ist, alle Einträge >= 1.1.2021 herauszufiltern, bzw. alle die kleiner sind, zu löschen.
Im Netz kam der Hinweis, die Spalte zu markieren, dann mit der Suchen/Ersetzen-Formel (Strg.+F: Suche Punkt -> Ersetze durch Punkt) zu arbeiten.
Das funktioniert wunderbar, wenn ich das manuell durchführe. ABER: wenn ich diesen Vorgang über Makro aufzeichnen durchführe, funktioniert das beim Abspielen nicht.
Hier der entstandene Code:

Sub Makro ()

Columns("G:G").Select
Selection.Replace What:=".", Replacement:=".", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False, FormulaVersion:=xlReplaceFormula2
Columns("G:G").Select
Selection.NumberFormat = "dd/mm/yyyy"
Columns("G:G").Select
ActiveSheet.Range("$A$1:$M$45998").AutoFilter Field:=7, Criteria1:= _
"01.01.2021", Operator:=xlAnd
Rows("2:1048576").Select
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$1:$M$44556").AutoFilter Field:=7, Criteria1:="="
ActiveWindow.SmallScroll Down:=-21
Selection.Delete Shift:=xlUp
End Sub

Hat jemand eine Idee, woran das liegen kann?
Danke, Grüße, Gabi
Anzeige

24
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datumsformat wird nicht erkannt
09.11.2024 11:21:32
Sigi.21
Hallo Gabi,

dein Datum ist vermutlich ein TEXT. Prüfe mit =IstText()? oder =IstZahl()?
Dann hast du Klarheit.

Wo kommen die Daten her? Dort liegt wohl die Ursache.

Gruß Sigi
AW: Datumsformat wird nicht erkannt
09.11.2024 11:26:29
GäbiBu
@ Sigi: ja, ist als text formatiert
AW: Datumsformat wird nicht erkannt
09.11.2024 11:31:27
Sigi.21
Hallo Gabi,

du kannst folgendes versuchen:
1. Schreibe eine 1 (als Zahl) in eine leere Zelle
2. Kopiere diese Zahl (strg + c)
3. Markiere deine Textdaten mit der Maus
4. Rechte Maustaste - Inhalte einfügen - Multiplizieren - ok
5. anschließend deine Daten wieder formatieren

Wenn du Excel zum Rechnen zwingst, kann Excel das Taxtdatum in ein echtes Datum umwandeln.

Gruß Sigi
Anzeige
AW: Datumsformat wird nicht erkannt
09.11.2024 11:52:44
GäbiBu
Funktioniert soweit, allerdings wenn ich diese Aufzeichnung in den Code einfüge, habe ich am Ende ein leeres Tabellenblatt.
ich vermute, so wird das Datumsformat auch nicht erkannt.
Sub ms()

Range("O1").Select
ActiveCell.FormulaR1C1 = "1"
Range("O1").Select
Selection.Copy
Columns("G:G").Select
Selection.PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Selection.NumberFormat = "m/d/yyyy"

Columns("G:G").Select
ActiveSheet.Range("$A$1:$M$45998").AutoFilter Field:=7, Criteria1:= _
"01.01.2021", Operator:=xlAnd
Rows("2:1048576").Select
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$1:$M$44556").AutoFilter Field:=7, Criteria1:="="
ActiveWindow.SmallScroll Down:=-21
Selection.Delete Shift:=xlUp
End Sub


so sieht der Code jetzt aus
Anzeige
AW: Datumsformat wird nicht erkannt
09.11.2024 12:05:08
RPP63
Was glaubst Du, macht folgendes?
Rows("2:1048576").Delete
AW: Datumsformat wird nicht erkannt
09.11.2024 12:56:19
GäbiBu
das ist der Teil, der die Zeilen löschen soll, die 2021 sind.
somit wäre das doch ok.
ich vermute, dadurch, dass nicht erkannt wird, dass das Datum ist, wird alles markiert und gelöscht.
AW: Datumsformat wird nicht erkannt
09.11.2024 12:17:21
Sigi.21
Hallo Gaby,

markiere deine Textdaten und lasse das Makro laufen.
https://www.herber.de/bbs/user/173486.xlsm

Gruß Sigi

Anzeige
AW: Datumsformat wird nicht erkannt
09.11.2024 12:59:44
GäbiBu
das funktioniert, die Spalte G ist trotzdem noch text, und deshalb wird anschließend alles gelöscht
AW: Datumsformat wird nicht erkannt
09.11.2024 11:22:36
GäbiBu
hier noch die Beispieldatei
AW: Beiträge nicht gelesen
09.11.2024 13:13:07
Fennek
Hallo,

in der Beispieldatei geht


Spalte "G" markieren
Menü: Daten -> Text-in-Spalten
kein Trennzeichen, weiter
Format "Datum"
enter


Danach ist die Spalte ein gültiges Excel-Datum.


mfg
Anzeige
AW: Datumsformat wird nicht erkannt
09.11.2024 21:41:48
Piet
Hallo

dieser Code dürfte etwas komfortabler sein. Mit alter Sortierfunktion (Excel 2003). Ist leichter zu programmieren!
Durch das Abwärts Sortieren kommen alle alten Daten ans Tabellenende.
Dann braucht das Löschmakro nicht alle Zeilen nach oben durchlaufen.

mfg Piet

Sub test2()

lastZelle = Cells(Rows.Count, 1).End(xlUp).Row
Range("A1:M" & lastZelle).Sort Key1:=Range("G1"), Order1:=xlDescending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
' Löschen der Werte, die vor 2021 liegen
For i = lastZelle To 1 Step -1
If IsDate(ws.Cells(i, 7).Value) Then
datumWert = DateValue(ws.Cells(i, 7).Value)
If datumWert DateSerial(2021, 1, 1) Then
ws.Rows(i).Delete Shift:=xlUp
Else: Exit For
End If
End If
Next i
End Sub
Anzeige
AW: Autofilter
09.11.2024 22:07:42
Fennek
Hallo,

wenn das Datum in ein Excel-Datum gewandelt wurde, kann der Autofilter auf das Datum angewendet werden.

Bei Bedarf können alle sichtbaren Zellen per "copy-Paste" in ein neues Blatt übertragen werden.

mfg
AW: Beiträge nicht gelesen
09.11.2024 18:21:19
GäbiBu
Hallo ihr Guten,
also mit der Methode von Fennek funktioniert das Umformatieren in ein Datum perfekt. Danke für die Tipps.

Ich hänge jedoch immer noch an dem Teil, wo ich mir Zeilen 2021 anzeigen und diese dann löschen möchte. Es haut mir entweder alle Zeilen raus, oder der Filter 2021 funktioniert nicht.
Habe es mit diesem Code probiert:
' Werte anzeigen, die vor 2021 liegen

For Each zelle In ws.Range("G1:G" & letzteZeile)
If IsDate(zelle.Value) Then
datumWert = DateValue(zelle.Value)
If datumWert DateSerial(2021, 1, 1) Then
anzeigenBereich.Value = zelle.Value
Set anzeigenBereich = anzeigenBereich.Offset(1, 0) ' Nächste Zelle in Spalte H
End If
End If
Next zelle

' Löschen der Werte, die vor 2021 liegen
For i = letzteZeile To 1 Step -1
If IsDate(ws.Cells(i, 7).Value) Then
datumWert = DateValue(ws.Cells(i, 7).Value)
If datumWert DateSerial(2021, 1, 1) Then
ws.Rows(i).Delete
End If
End If
Next i


beziehungsweise mit diesem aus dem Makro aufzeichnen (was mir alles löscht):
 Columns("G:G").Select

ActiveSheet.Range("$A$1:$M$45998").AutoFilter Field:=7, Criteria1:= _
"01.01.2021", Operator:=xlAnd
Rows("2:1048576").Select
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$1:$M$44556").AutoFilter Field:=7, Criteria1:="="
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$1:$M$44555").AutoFilter Field:=7


hat hier noch jemand einen guten Rat?
Anzeige
AW: Beiträge nicht gelesen
09.11.2024 18:43:34
GäbiBu
dieser Code hier funktioniert zwar, jedoch bezieht der sich auf die einzelnen in der Spalte enthaltenen Datums. Ich hätte gern statt der speziellen werte mit 2021 gearbeitet.
(Bitte nicht an der Textfarbe stören, das hab ich nur für mich zur Kontrolle eingefügt)

Sub Makro12()

' Makro12 Makro
Columns("G:G").Select
Selection.TextToColumns Destination:=Range("G1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(0, 4), TrailingMinusNumbers:=True
ActiveSheet.Range("$A$1:$M$45998").AutoFilter Field:=7, Criteria1:=Array( _
"="), Operator:=xlFilterValues, Criteria2:=Array(0, "11/24/2020", 0, _
"12/16/2019", 0, "12/1/2018", 0, "12/23/2017", 0, "12/22/2016")
Rows("67:45757").Select
With Selection.Font
.Color = -16776961
.TintAndShade = 0
End With
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$1:$M$44555").AutoFilter Field:=7
End Sub

Anzeige
AW: Beiträge nicht gelesen
09.11.2024 20:54:48
Piet
Hallo

probiere es bitte mal mit diesem Code und lasse - alle anderen Makros - weg!
Du musst nur noch den Befehl für letzteZeile einfügen. So läuft er bei mir.
Empfielt sich noch Application.ScreenUpdating = False davor zu setzen.

mfg Piet

    ' Löschen der Werte, die vor 2021 liegen

For i = letzteZeile To 1 Step -1
If IsDate(ws.Cells(i, 7).Value) Then
datumWert = DateValue(ws.Cells(i, 7).Value)
If datumWert DateSerial(2021, 1, 1) Then
ws.Rows(i).Delete shift:=xlUp
End If
End If
Next i
Anzeige
AW: Beiträge nicht gelesen
09.11.2024 22:06:00
GäbiBu
funktioniert hervorragend :) tausend Dank!
Muss das jetzt nur noch in den großen Tabellen-Bearbeitungs-Code einbauen...

Das mit der Sortierfunkton prüfe ich morgen - Danke für die Mühe bisher!
AW: Beiträge nicht gelesen
09.11.2024 19:02:12
BoskoBiati2
Hi,

ist Dir immer noch nicht aufgefallen, dass Du alle Zeilen, unabhängig vom Datum löschst (s. auch den Beitrag von RPP63)?

Rows("2:1048576").Select

Selection.Delete Shift:=xlUp


Vielleicht solltest Du Dich mal intensiver mit den Befehlen von VBA befassen.

Gruß

Edgar
Anzeige
AW: Beiträge nicht gelesen
09.11.2024 19:04:20
GäbiBu
ja, mir ist das aufgefallen, und deswegen bin ich ja hier und frage um Rat.
Vlt. kann mir ja jemand auf die Sprünge helfen?
AW: Beiträge nicht gelesen
09.11.2024 19:33:01
BoskoBiati2
Hi,

dann lösche doch zuerst mal die Zeilen. und probiere die Dinge aus, die die Kollegen schon empfohlen haben.

Gruß

Edgar

Datei
09.11.2024 11:30:56
RPP63
Du musst den Link, den Du beim Hochladen erhältst, in Deinen Beitrag kopieren.
Anzeige
AW: Datei
09.11.2024 13:25:03
Alwin Weisangler
Hallo,
eine weitere Möglichkeit dies zu ändern wäre so:



Option Explicit

Sub inEchtesdatum()
Dim i&, arr(): arr = Tabelle1.UsedRange
For i = 1 To UBound(arr)
If IsNumeric(arr(i, 7)) Then arr(i, 7) = CDate(arr(i, 7))
Next i
Tabelle1.Cells().Resize(UBound(arr, 1), UBound(arr, 2)) = arr
End Sub


Gruß Uwe
Anzeige
AW: Datei
09.11.2024 14:05:08
GäbiBu
Hallo Uwe,
funktioniert ebenfalls, habe am Ende aber trotzdem keinen Datumswert, sondern immer noch Text, wenn ich abfrage =isttext()
AW: Datei
09.11.2024 14:44:37
Alwin Weisangler
Hallo,

also in deiner Testdatei kann man nach Durchlauf diese Prozedur sehen, dass es ein echtes Datum ist. =ISTZAHL() sagt WAHR bzw. Datum steht rechts.
Sollte in der Originaldatei das Datum links stehen bzw. =ISTZAHL() gibt FALSCH aus dann braucht es weitere Infos.
Ist die Tabelle ein Listobjekt (formatierte Tabelle).
Wie werden die Zellen mit dem „Datum“ gefüllt (Userform / Textbox / Combobox)

Gruß Uwe

Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige