Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1776to1780
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 bei bestimmten Wert

Zeilen löschen bei bestimmten Wert
22.08.2020 13:31:37
Soeren
Moin,
ich lösche in meiner Tabelle bestimmte Zeilen, wenn sie einen entsprechenden Zahlenwert haben. Hier sind es drei fünfstellige Artikelnummern mit folgendem Befehl:
Sub Artikel_loeschen_KV()
' Artikel_loeschen_KV Makro
For i = Cells(Rows.Count, 6).End(xlUp).Row To 1 Step -1
If Cells(i, 6) = "21111" Then Rows(i).Delete
If Cells(i, 6) = "21112" Then Rows(i).Delete
If Cells(i, 6) = "21113" Then Rows(i).Delete
Next
End Sub
Weil meine Artikelliste etwas lönger ist, würde ich das gerne verkürzen.
Kann ich den Befehl auch von 21111 bis 21113 laufen lassen, ohne jede einzelne Nr. aufzuführen?
Vielen Dank für Eure Hilfe und ein scönes Wochenende!
Soeren

21
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Zeilen löschen bei bestimmten Wert
22.08.2020 13:42:54
Daniel
Hi
Naja mit der Abfrage, ob der Zellwert größer gleich 21111 UND ob der Zellwert kleiner gleich 21113 ist.
Bekommst du das alleine hin?
Ansonsten ist das Löschen von Zeilen einzeln per Schleife extrem langsam.
Bei größeren Datenmengen ist man da von Hand schneller als das Makro.
Beispielsweise kann man per Formel in einer Hilfsspalte alle Zeilen die gelöscht werden sollen mit 0 kennzeichnen und die die stehen bleiben sollen mit der Zeilennummer.
Dann kann man die Zeilen mit 0 über das Daten - Fatentools - Diluplikate entfernen löschen.
Codebeidspiele gibts genügend im Archiv.
Gruß Daniel
Anzeige
AW: Zeilen löschen bei bestimmten Wert
22.08.2020 14:04:35
Soeren
Aus dem Bauch heraus würde ich es so schreiben?:
Sub Artikel_loeschen_KV()
' Artikel_loeschen_KV Makro
For i = Cells(Rows.Count, 6).End(xlUp).Row To 1 Step -1
If Cells(i, 6) = "21111" And Cells(i, 6) 
Oder kann ich auch: ...
und warum probierst Du es nicht einfach aus? owRT
22.08.2020 14:08:32
Matthias
AW: Zeilen löschen bei bestimmten Wert
22.08.2020 15:11:44
Daniel
Warum Bauch?
Der ist für logische Entscheidungen nicht unbedingt das Beste Organ.
AW: Zeilen löschen bei bestimmten Wert
22.08.2020 15:53:22
Soeren
Ich hatte gerade keine Möglichkeit, es zu testen. Darum meine Mutmaßung "aus dem Bauch heraus". Meine Level-Angabe zeigt ja, dass ich mich nicht ganz so gut mit VBA auskenne.
AW: Zeilen löschen bei bestimmten Wert
22.08.2020 19:08:19
Werner
Hallo,
Meine Level-Angabe zeigt ja, dass ich mich nicht ganz so gut mit VBA auskenne.
Und warum ignorierst du dann den Hinweis von Daniel auf eine Lösung mit Formel und Remove Duplicates?
Statt dessen machst du weiter mit deiner "Schleifenlösung" rum.
Gruß Werner
Anzeige
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 12:38:06
Soeren
Hallo Werner und Daniel,
Meine schlechte "Schleifenlösung" ist bisher der geringste Widerstand gewesen, weil sie funktioniert - auch wenn sie etwas dauert und wahrscheinlich fragil ist. Ich möchte gerne einmal meinen Ansatz zeigen, der Euch (weil Schleife) wohl ein Graus ist . Und wenn es einfacher geht, bin ich über jede Hilfe dankbar.
Sub Artikel_loeschen()
' Artikel_loeschen Makro
For i = Cells(Rows.Count, 6).End(xlUp).Row To 1 Step -1
If Cells(i, 6) >= "10000" And Cells(i, 6) = "20020" And Cells(i, 6) = "20240" And Cells(i, 6) = "20310" And Cells(i, 6) = "20640" And Cells(i, 6) = "20670" And Cells(i, 6) = "30090" And Cells(i, 6) = "30150" And Cells(i, 6) = "31110" And Cells(i, 6) = "47091" And Cells(i, 6) = "60010" And Cells(i, 6) = "62206" And Cells(i, 6) = "63100" And Cells(i, 6) = "70060" And Cells(i, 6) = "70100" And Cells(i, 6) = "70180" And Cells(i, 6) = "80120" And Cells(i, 6) = "82200" And Cells(i, 6) = "91200" And Cells(i, 6) 
Viele Grüße
Soeren
Anzeige
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 12:41:55
Werner
Hallo,
lad mal deine Mappe hoch. Ich habe keine Lust das nach zu bauen.
Gruß Werner
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 12:55:40
Soeren
Bitte nicht erschrecken..mit Sicherheit gibt es viel zu verbessern, das weiß ich. Aber es funktioniert und ich bin für meine Laien-Kenntnisse und "Try & Error" Versuche und Foren-Recherchen recht zufrieden.
https://www.herber.de/bbs/user/139795.xlsm
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 13:00:21
Soeren
Die Mappe zieht auch noch Daten aus einem separaten Liste. Sag Bescheid, wenn du die auch benötigst.
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 14:19:35
Werner
Hallo,
teste mal damit. Hier werden die zu löschenden Zeilen erst gesammelt und dann alle auf einmal gelöscht.
Option Explicit
Sub Artikel_loeschen()
Dim i As Long, raWeg As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
On Error Resume Next
With Worksheets("Tabelle1")
For i = 1 To Cells(Rows.Count, 6).End(xlUp).Row
Select Case Cells(i, 6)
Case 5000 To 5005, 10000 To 10025, 20020 To 20170, 20240 To 20250, 20310 To 20530, _
20640 To 20650, 20670 To 21115, 30090 To 30110, 30150 To 30160, 31110 To 47080, _
47091 To 47651, 60010 To 62204, 62206 To 62209, 63100 To 63170, 70060 To 70070, _
70100 To 70110, 70130, 70180 To 71150, 80120 To 80150, 82200 To 82220, _
91200 To 91400, "PORTO", "FR", "BH25", "he", "SM", "HSM25", "ROT3", "BZ1", "BZ2,5"
If raWeg Is Nothing Then
Set raWeg = .Cells(i, "A")
Else
Set raWeg = Union(raWeg, .Cells(i, "A"))
End If
Case Else
End Select
Next
If Not raWeg Is Nothing Then
raWeg.EntireRow.Delete
End If
End With
Set raWeg = Nothing
On Error GoTo 0
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Gruß Werner
Anzeige
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 15:13:54
Soeren
Vielen Dank Werner,
wenn ich den Befehl ganz zum Schluss auf die Auflistung 'mit Leerzeilen' anwende, löscht er alle Zeilen, die ich gelöscht haben möchte. Wenn ich jedoch den Befehl ganz zu Anfang auf die rohe Auflistung 'ohne Leerzeilen' gebe, passiert nichts. Woran könnte das liegen?
Ich komme so auf jeden Fall damit zurecht.
Vielen Dank Werner!
Gruß
Soeren
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 15:40:24
Werner
Hallo,
auf die rohe Auflistung 'ohne Leerzeilen'
damit kann ich mal gar nichts anfangen.
Gruß Werner
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 16:39:39
Soeren
Entschuldige bitte.
In einer Liste mit Leerzeilen zwischen den verschiedenen Artikelnummern funktioniert es. In einer Liste ohne Leerzeilen funktioniert es nicht.
Gruß
Sören
Anzeige
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 16:46:34
Werner
Hallo,
was ich bezweifle.
Dann lad mal so eine "Liste" hier hoch, in der es nicht funktioniert.
Gruß Werner
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 18:45:51
Werner
Hallo,
so:
Option Explicit
Sub artikelloeschen1()
Dim i As Long, loSpalte As Long, raWeg As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
End With
On Error Resume Next
With Worksheets("Tabelle1")
loSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = 1 To Cells(Rows.Count, 6).End(xlUp).Row
Select Case Cells(i, 6)
Case 5000 To 5005, 10000 To 10025, 20020 To 20170, 20240 To 20250, 20310 To 20530, _
20640 To 20650, 20670 To 21115, 30090 To 30110, 30150 To 30160, 31110 To 47080, _
47091 To 47651, 60010 To 62204, 62206 To 62209, 63100 To 63170, 70060 To 70070, _
70100 To 70110, 70130, 70180 To 71150, 80120 To 80150, 82200 To 82220, _
91200 To 91400, "PORTO", "FR", "BH25", "he", "SM", "HSM25", "ROT3", "BZ1", "BZ2,5"
If raWeg Is Nothing Then
Set raWeg = .Cells(i, "A").Resize(, loSpalte)
Else
Set raWeg = Union(raWeg, .Cells(i, "A").Resize(, loSpalte))
End If
Case Else
End Select
Next
If Not raWeg Is Nothing Then
raWeg.Delete
End If
End With
Set raWeg = Nothing
On Error GoTo 0
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Gruß Werner
Anzeige
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 20:10:22
Soeren
Moin Werner,
vielen Dank, es funktioniert einwandfrei!
Schönen Abend!
Sören
Gerne u. Danke für die Rückmeldung. o.w.T.
23.08.2020 21:21:41
Werner
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 13:23:02
Daniel
Hi
~f~
1. Einmalige Vorbereitung der Daten:
- Erstellen auf einem weiteren Blatt eine zusätzliche Tabelle.
- Formatieren die Spalten A und B mit dem Zahlenformat Text.
- Füge in die Spalte A alle Werte für die >=-Prüfung ein und in Spalte B die Werte aus der - Die Werte aus der =-Prüfung schreibt du in der gleichen Tabelle in Spalte A und B
- Füge in Spalte A noch einen Dummywert 0 hinzu.
- Sortieren die Liste nach Spalte A
~f~
2. Löschen der Zeilen
- in die erste freie Spalte am Tabellenende kommt folgende Formel:
=Wenn($F1

- in die Zeile 1 der Hilfssspalte kommt die 0
- wende dann auf die ganze Tabelle die Funktion Daten - Datentools - Duplikate entfernen an mit der Hilfsspalte als Kriteriumsspalte und der Option "keine Überschrift"
- Lösche die Hilfsspalte
Diesen Schritt 2 programmierterst du dir als Makro. Der Recorder hilft dir dabei, weil das Makro zum größten Teil aus aufzeichenbaren Excel-Anweisungen besteht.
Mit den Suchbegriffen "Zeilen löschen" und "Duplikate entfernen" solltest du auch Codebeispiele im Archiv finden, bei denen du dann nur noch die Formel anpassen musst.
Das ganze hat zwei Vorteile:
a) es ist viel schneller
b) du kannst über die Tabelle weitere Löschbedingungen hinzufügen, entfernen oder ändern, ohne in den Code eingreifen zu müssen
c) das geht auch von Hand ohne Makro.
Gruß Daniel
Anzeige
AW: Zeilen löschen bei bestimmten Wert
23.08.2020 15:16:04
Soeren
Moin Daniel,
vielen Dank für Deine Mühe! Ich werde es parallel zu Werners Vorschlag einmal ausprobieren und mich in Zukunft weniger an Schleifen halten.
Beste Grüße
Sören

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige