Zeilen löschen mit Bedingung

Bild

Betrifft: Zeilen löschen mit Bedingung
von: Stefan
Geschrieben am: 11.11.2015 23:48:26

Hallo!
Ich habe eine Tabelle, wo in dem Bereich C5:C36 Namen stehen.
Jetzt möchte ich das er mir automatisch gleich die komplette Zeile löscht, für bei allen Namen die nicht mit dem Buchstaben "S" beginnen. Und das würde ich gern ohne Filter lösen. Das heißt am Ende sollen in der Spalte C nur Namen stehen die mit "S" beginnen.
Ich hoffe mir kann jemand dabei helfen.

Bild

Betrifft: AW: Zeilen löschen mit Bedingung
von: Daniel
Geschrieben am: 11.11.2015 23:56:30
Hi
1. schreibe in eine Hilfsspalte am Tabellenende folgende Formel: (Formel für Zeile 5)
=Wenn(Links(C5;1)="S";Zeile();0)
und ziehe die Formel bis Zeile 36 runter.
2. schreibe in die Zeile 4 der Hilfsspalte ebenfalls die 0 (diese Zeile sollte die Überschriftenzeile sein
3. wende auf die Zeilen 4-36 die Funktion DATEN - DATENTOOLS - DUPLIAKTE ENTFERNEN an, mit der Hilfsspalte als Kriterium und der Option "keine Überschrift"
4. lösche die Hilfsspalte wieder.
automatsich als Makro so (ich nehme Spalte D, das kannst du ja ändern)

With Range("D4:D36")
    .formulaR1C1 = "=IF(Left(RC3,1)=""S"",Row(),0)"
    .Cells(1, 1).Value = 0
    .EntireRow.Removeduplicates .column, xlno
    .ClearContents
End with

Gruß Daniel

Bild

Betrifft: AW: Zeilen löschen mit Bedingung
von: Matthias
Geschrieben am: 12.11.2015 00:02:39
Hallo Stefan,

Sub Test()
Dim x As Long
For x = 36 To 5 Step -1
    If LCase(Left(Range("C" & x), 1)) <> "s" Then Rows(x).Delete
Next x
End Sub
lg Matthias

Bild

Betrifft: AW: Zeilen löschen mit Bedingung
von: Matthias L
Geschrieben am: 12.11.2015 00:03:41
Hi
Dim x&
For x = 36 To 5 Step -1
If Left(Cells(x, 3).Value, 1) <> "S" Then Rows(x).Delete
Next
Gruß Matthias

Bild

Betrifft: AW: Zeilen löschen mit Bedingung
von: Stefan
Geschrieben am: 15.11.2015 21:22:00
Also Danke mal für eure Antworten aber irgendwie funktionieren die Codes leider nicht.
Ich muss noch korrigieren die Namen stehen in Spalte B und es steht zuerst der Nachnahme und danach der Vorname beides aber in der gleichen Zelle.
Vielleicht funktioniert es deswegen nicht. Kann es sich Bitte jemand nochmal anschauen?

Bild

Betrifft: AW: If Left(Cells(x, 2).Value<> "S" Then ..
von: Gerd L
Geschrieben am: 15.11.2015 21:38:51
Hallo Stefan,
ändere die Prüfspalte auf (B =) 2 !
Gruß Gerd

Bild

Betrifft: AW: If Left(Cells(x, 2).Value<> "S" Then ..
von: Stefan
Geschrieben am: 15.11.2015 22:42:15
Hallo Gerd!
Danke für die Antwort.
Ich hab es auch schon geändert auf,

Sub test()
Dim x&
 For x = 36 To 5 Step -1
 If Left(Cells(x, 2).Value, 1) <> "S" Then Rows(x).Delete
 Next
End Sub
aber es funktioniert leider trotzdem nicht richtig, es bleiben weiterhin Namen mit anderen Buchstaben stehen, und es sollen ja alle Zeilen gelöscht werden wo der Name nicht mit den Buchstaben "S" beginnt.

Bild

Betrifft: ... <> "S" Then ..
von: Matthias L
Geschrieben am: 16.11.2015 14:01:33
Hallo
Vermutlich sitzt das Problem gerade ca. 80cm vor dem Bildschirm.
Deine Aussagen sind einfach nur schwammig.
Jetzt möchte ich das er mir automatisch gleich die komplette Zeile löscht, für bei allen Namen die nicht mit dem Buchstaben "S" beginnen

Darauf hast Du eine funktionierende Antwort erhalten



Ich muss noch korrigieren die Namen stehen in Spalte B und es steht zuerst der Nachnahme und danach der Vorname beides aber in der gleichen Zelle.
Darauf hast Du auch eine funktionierende Antwort erhalten


aber es funktioniert leider trotzdem nicht richtig, es bleiben weiterhin Namen mit anderen Buchstaben stehen, und es sollen ja alle Zeilen gelöscht werden wo der Name nicht mit den Buchstaben "S" beginnt.
Also gehe ich mal davon aus das Du selbst nicht weißt, was Du willst.
zuerst der Nachnahme und danach der Vorname
Vermutlich wiilst Du also alle Zeilen löschen deren Vorname nicht mit mit "S" beginnt.
Richtig erkannt?
Gruß Matthias

Bild

Betrifft: AW: ... <> "S" Then ..
von: Stefan
Geschrieben am: 16.11.2015 21:22:28
Hallo Matthias!
Das einzige was sich geändert hat, war bei mir die Änderung bei der Spalte sonst nichts. Die Funktion die ich gern hätte soll aber die selbe sein. Ich hab von Anfang an geschrieben, dass er mir alle Zeilen löschen soll wo nicht der Name in Spalte B mit "S" beginnt, und daran hat sich auch nichts geändert.
Nur der Code funktioniert leider nicht richtig, sonst hätte ich ja nicht nochmal dazu was geschrieben. Ich hab alle von euren Hilfen ausprobiert der einzige der funktioniert ist der von Daniel, nur da wird nur der Text gelöscht die Zeile aber nicht bzw. ich hab dann von B1- B36 nur leere Felder, und die Namen stehen dann erst ab Zelle B37. Ich möchte aber dass alle anderen Namen außer die mit "S" beginnen gleich die komplette Zeile löscht, weil ich die Daten nicht brauche und das die dann auch ganz oben in der Tabelle stehen.
Und niemand hat was von Vornamen geschrieben dass mir das gelöscht werden soll?
Sondern meine Frage war, das vielleicht der Code deswegen nicht funktioniert, weil die Zellen in der Spalte B so eingegeben sind zb. "Schulte Thomas" oder "Schneider Harald".
Ich werde versuchen nachher die kleine Vorlage hochzuladen, dann kann man sich besser was dazu vorstellen.
Und möglicherweise hab ich ein Fehler dabei gemacht, aber ich bekomme es nicht hin.

Bild

Betrifft: AW: ... <> "S" Then ..
von: Stefan
Geschrieben am: 16.11.2015 21:40:04
So hier mal eine kleine Vorlage zum Testen
Die Codes hab ich mal unter den Makros eingefügt, weiß aber nicht was ich dabei falsch gemacht habe.
https://www.herber.de/bbs/user/101571.zip

Bild

Betrifft: AW: ... <> "S" Then ..
von: Stefan
Geschrieben am: 16.11.2015 21:54:26
So jetzt ist mir tatsächlich auf die schnelle ein Fehler passiert, weil ich nur irgendwelche Namensdaten aus dem Internet rauskopiert habe.
Bitte meine vorigen Beitrag ignorieren das ist jetzt die richtige Vorlage.
https://www.herber.de/bbs/user/101573.zip

Bild

Betrifft: AW: ... <> "S" Then ..
von: DD
Geschrieben am: 16.11.2015 22:06:41
Moin Stefan,
ich habe einmal den Makro in Modul3 Sub test3() ausprobiert.
Funktioniert tadellos.
Es werden alle Zeilen, in denen die Namen kein S am Anfang haben, gelöscht.
Das Ganze im Bereich von Zeile 5 bis Zeile 36.
Gruß Dieter_D

Bild

Betrifft: AW: ... <> "S" Then ..
von: Stefan
Geschrieben am: 16.11.2015 22:51:54
Ok dann war das der Fehler, dass er erst ab Zeile 5 gelöscht hat. Hab es jetzt im Code geändert, und jetzt scheint es perfekt zu funktionieren. Meine vba Kenntnisse sind leider nicht besonders gut, deswegen ist mir die Bedeutung im Code nicht immer ganz klar. Auf jeden Fall Danke, so schaut der Code jetzt aus.

Dim x&
 For x = 36 To 1 Step -1
 If Left(Cells(x, 2).Value, 1) <> "S" Then Rows(x).Delete
 Next
End Sub


 Bild

Beiträge aus den Excel-Beispielen zum Thema "Zeilen löschen mit Bedingung"