Anzeige
Archiv - Navigation
1456to1460
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Zeilen löschen mit Bedingung

Zeilen löschen mit Bedingung
11.11.2015 23:48:26
Stefan
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.

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen mit Bedingung
11.11.2015 23:56:30
Daniel
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

Anzeige
AW: Zeilen löschen mit Bedingung
12.11.2015 00:02:39
Matthias
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

AW: Zeilen löschen mit Bedingung
12.11.2015 00:03:41
Matthias
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

AW: Zeilen löschen mit Bedingung
15.11.2015 21:22:00
Stefan
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?

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

AW: If Left(Cells(x, 2).Value<> "S" Then ..
15.11.2015 22:42:15
Stefan
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.

... <> "S" Then ..
16.11.2015 14:01:33
Matthias
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

Anzeige
AW: ... <> "S" Then ..
16.11.2015 21:22:28
Stefan
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.

Anzeige
AW: ... <> "S" Then ..
16.11.2015 21:40:04
Stefan
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

AW: ... <> "S" Then ..
16.11.2015 21:54:26
Stefan
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

Anzeige
AW: ... <> "S" Then ..
16.11.2015 22:06:41
DD
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

AW: ... <> "S" Then ..
16.11.2015 22:51:54
Stefan
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

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige