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

Zeilen mit Datum kleiner/ grösser als Datum lösch

Zeilen mit Datum kleiner/ grösser als Datum lösch
20.01.2015 12:53:18
Christian
Hallo zusammen,
ich habe eine Arbeitsmappe mit einem Übersichtsblatt auf welchem ein Anfangs- und ein Enddatum steht. Auf einem zweiten Tabellenblatt stehen Detaildaten, in denen ich nun per Makro alle Zeilen mit Datum Enddatum löschen möchte.
Hier mein Versuch, das Makro löscht aber leider ALLE Zeilen, was ist falsch?
Sub M3_DelRowsNotWeek1()
' Alle Zeilen die nicht in Woche 1 liegen
Dim wks3 As Worksheet
Dim a As Long
Set wks3 = Sheets("Worksheet_Woche1")
wks3.Select
For a = wks3.Cells(Rows.Count, 4).End(xlUp).Row To 5 Step -1
If wks3.Cells(a, 4).Value  Sheets("Wochenplan").Cells(5, 27).Value Then
wks3.Rows(a).Delete
End If
Next a
End Sub

Vielen Dank und viele Grüsse
Christian

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen Löschen mit Formel und DuplikateEntf.
20.01.2015 13:28:16
Daniel
Hi
schwer zu sagen, ohne die Datei zu kennen.
schon mal im einzelstep geprüft, obs an der ersten oder zweiten Schleife liegt?
vielleicht hast du auch Start- und Enddatum vertauscht?
Sind die Datumswerte in der einen Tabelle als Text und in der anderen Tabelle als Zahl hinterlegt?
Ich würde das Thema "Zeilenlöschen mit Bedingung" ab Excelversion 2007 grundsätzlich nach diesem Schema lösen:
1. Trage in eine Hilfsspalte am Tabellenende eine Formel ein, welche alle Zeilen die gelöscht werden sollen mit 0 kennzeichnet und alle die stehen bleiben müssen mit der aktuellen Zeilennummer.
in deinem Fall könnte die formel so aussehen (Formel für Zeile 5)
=Wenn(Oder($D5 Kleiner Wochenplan!$Z$5;$D5 Grösser Wochenplan!$AA$5);0;Zeile())

2. schreibe in die Überschriftenzeile der Hilfsspalte ebenfalls die 0
3. Wende auf die ganze Tabelle die Funktion DATEN - DATENTOOLS - DUPLIAKTE ENTFERNEN an, mit der Hilfsspalte als Kriteriumsspalte und der Option "keine Überschrift"
4. lösche die Hilfsspalte
das Funktioniert von Hand schnell und einfach, und du kannst schon beim Eintragen der Formel kontrollieren, ob die Formel richtig ist (dh ob richtig gekennzeichnet wird) oder ob du die Formel noch mal kontrollieren musst.
Auch als Makro geht das so am einfachsten und vorallem sehr schnell, weil du ja nur diese 4 Schritte per Code ausführen musst und keine Schleifen oder ähnliche Konstrukte brauchst (der Recorder ist dein Freund)
als Code würde das dann so aussehen:
With Sheets("Worksheet_Woche1").Usedrange
With .Columns(.Columns.count).Offset(3, 1).Resize(.Rows.count - 3, 1)
.FormulaR1C1 = "=If(OR(RC4 KLEINER Wochenplan!R5C26,RC4 GRÖSSER Wochenplan!R5C27),0,Row())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .Column, xlno
.Clearcontents
End With
End With
Gruß Daniel
ps. das "KLEINER" und "GRÖSSER" bitte durch die Zeichen ersetzen, aber die Forumssoftware stellt den code sonst nicht richtig dar.

Anzeige
AW: Zeilen Löschen mit Formel und DuplikateEntf.
22.01.2015 10:28:22
Christian
Hallo Daniel,
vielen Dank für Deine Tipps, ich habe die Formate überprüft und sie sind gleich. Auch Start und Ende passen. Ich habe jetzt einen Zwischenschritt mit Ermittlung der Kalenderwoche eingebaut und nun klappt es.
Vielen Dank für Deine Hilfe!
Gruss
Christian

326 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige