1.9k Aufrufe
Gefragt in Tabellenkalkulation von
Hallo
möchte in Excel mit VBA in einer Tabelle alle Zeilen löschen inden das Jahr aus der Abfrage bzw. Vorgabe in Spalte A nicht vorkommt.

Vielen Dank für eure Hilfe
Wetterigel

6 Antworten

0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
warum benutzt Du nicht Autofilter und kopierst den sichtbaren Bereich.

Gruß Hajo
0 Punkte
Beantwortet von
Hallo Hajo

Danke für die schnelle Antwort

Autofilter möchte ich nicht verwenden weil die Daten mit weiteren Makros danach verwendet werden. Die Daten mit falschem Jahr sollen entgültig gelöscht werden.

MfG Wetterigel
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
ich vermute mal Du kennst Dich mit VBA aus und kannst es anpassen

Sub löschen()
‘ mit bestimmten Datum löschen, Heute =Date
Dim LoI As Long
Dim LoLetzte As Long
' letzte Zelle in Spalte A unabhängig von Version
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
On Error Resume Next
For LoI = LoLetzte To 1 Step -1
If IsDate(Cells(LoI, 1)) Then
If CDate(Cells(LoI, 1)) = CDate("23.12.1989") Then Rows(LoI).Delete
End If
Next
On Error Goto 0
End Sub
0 Punkte
Beantwortet von
Hallo
Danke für das Makro

Löst leider mein Problem nicht.

In Spalte A
1.2.2008
3.4.2008
8.9.2009
6.10.2009
9.9.2010
In Inputbox kan das benötigte Jahr eingetragen werden zb. 2009, danach sollen alle Zeilen in denen das Jahr 2009 nicht vorkommt gelöscht werden.
Die Datumsreihe geht von 2008 bis Heute, ca 800 Zeilen.
Autofilter ist keine Lösung.


MfG
Wetterigel
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
dann prüfe
If year(CDate(Cells(LoI, 1))) = Variable Then Rows(LoI).Delete
0 Punkte
Beantwortet von
Hallo Hajo

Herzlichen Dank für Deine Unterstützung.

Im Anschluß mein Ergebniss zum Testen

Makro 1 zum füllen einer Beispieltabelle.


Sub Makro1()
'
' Makro1 Makro
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "Datum"
Range("A2").Select
ActiveCell.FormulaR1C1 = "2/2/2008"
Range("A3").Select
ActiveCell.FormulaR1C1 = "3/3/2009"
Range("A4").Select
ActiveCell.FormulaR1C1 = "4/4/2010"
Range("A5").Select
End Sub


Makro "Löschen" das Ergebnis



Sub löschen()
' Alle Zeilen ausser Datum Jahr zb. 2009 und Kopfzeile Datum
Dim LoI As Long
Dim LoLetzte As Long
Dim variable As String

' letzte Zelle in Spalte A
LoLetzte = IIf(IsEmpty(Cells(Rows.Count, 1)), Cells(Rows.Count, 1).End(xlUp).Row, Rows.Count)
On Error Resume Next

variable = InputBox("Jahr:", , "2009")

For LoI = LoLetzte To 1 Step -1
'Kopfzeilenabfrage
If Year(CDate(Cells(LoI, 1))) = Datum Then Exit Sub
'Jahreszahl Kontrolle
If Year(CDate(Cells(LoI, 1))) <> variable Then Rows(LoI).Delete

Next
On Error GoTo 0
End Sub


Übrig bleibt nur die Kopfzeile und die Zeile mit Datum xxxx2009.


MfG
Wetterigel
...