Anzeige
Archiv - Navigation
1588to1592
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
gleiche Zeilen löschen
29.10.2017 11:26:39
Mooslechner
Hallo liebe User,
ich vergleiche 2 Tabellenblätter und will bei Zellengleichheit einer bestimmten Spalte die ganze Zeile löschen.
Kurioser Weise wird pro Durchlauf nur ein Teil gleicher Zeilen gelöscht.
Weiß hier wer Rat? Für Euere Hilfe bin ich dankbar.
In Tabellenblatt 2 befinden sich in Spalte A die Kriterien untereinander.
In Tabellenblatt 1 sollen in Spalte 2 verglichen werden, bei Gleichheit die komplette Zeile gelöscht werden. Hier mein Makro:
Sub Spaltenvergleich_gleiche_Zeilen_löschen()
'Hinweis: Tabelle 1 in 1 und Tabelle 2 in 2 umbenennen
Dim i As Integer, j As Integer
'Festlegen der Variabeln
Debug.Print i
Debug.Print j
EndeA = Worksheets("1").Cells(Rows.Count, 1).End(xlUp).Row
'legt das Ende des ersten Bereiches fest
EndeB = Worksheets("2").Cells(Rows.Count, 1).End(xlUp).Row
'legt das Ende des zweiten Bereiches fest
For i = 1 To EndeA
For j = 1 To EndeB
If Sheets("1").Cells(i, 2) = Sheets("2").Cells(j, 1) Then _
Sheets("1").Rows(i).Delete
Next j
Next i
End Sub

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: gleiche Zeilen löschen
29.10.2017 11:37:59
Werner
Hallo,
beim Löschen immer von unten nach oben.
For i = EndeA To 1 Step -1
Gruß Werner
AW: gleiche Zeilen löschen
31.10.2017 11:50:57
mooslechner
Vielen Dank Leute für die schnelle Hilfe.
Löschen von unten nach oben funktionert.
Die 2. Möglichkeit mit 0 und 1 werde ich auch noch ausprobieren
Viele Grüße an die netten Forumsteilnehmer.
M.
Gerne u. Danke für die Rückmeldung. o.w.T.
31.10.2017 12:05:21
Werner
AW: gleiche Zeilen löschen
29.10.2017 11:46:09
Hajo_Zi
beim löschen sollte man von der letzten zur ersten Zeile laufen.
Ich baue keine Datei nach. Die Zeit hat schon jemand investiert.
Ein Nachbau sieht meist anders aus als das Original. Darum sollte das Original verlinkt werden.
Der Name einer hochgeladenen Mappe wird im Beitrag automatisch angezeigt, sodass es bei Verwendung von aussagekräftigen Namen leichter fällt, sie später im Ablageordner wiederzufinden und sie gedanklich einem bestimmten Thema zuzuordnen. Namen wie Muster, Test, Mappe, Beispiel, Fehler, Kalender usw. sind so allgemein, dass eine Zuordnung zu einem Thema unmöglich gemacht wird.
Es sollte ein aussagekräftiger Name sein.

Ich gebe keinen Dank für eine Rückmeldung, da ich durch solche Beiträge nicht meine Beitragszahl erhöhen muss.
Also ich schreibe keine Beiträge mit dem Betreff "Gerne u. Danke für die Rückmeldung. o.w.T."
Rückmeldung ist ja in der Heutigen Zeit nicht üblich und die wenigen die eine Rückmeldung geben, mögen mir das verzeihen, das kein Danke für eine Rückmeldung kommt.
Beiträge von Werner, Luc, robert und folgende lese ich nicht.
Anzeige
AW: gleiche Zeilen löschen
29.10.2017 11:47:51
fcs
Hallo Mooslechner,
du musst für Tabelle1 den Zähler von EndeA nach 1 runterlaufen lassen.
Wenn du die Anführungszeichen bei Sheets("1") und Sheets("2") wegläßt, dann musst du die Blätter nicht umbenennen, sondern nur darauf achten, dass die Liste mit den zu löschenden Zeilen im 1. Registerblatt ist und die Vergleichsliste im 2..
Gruß
Franz
Sub Spaltenvergleich_gleiche_Zeilen_löschen()
'Hinweis: Tabelle 1 in 1 und Tabelle 2 in 2 umbenennen
Dim i As Integer, j As Integer
'Festlegen der Variabeln
Debug.Print i
Debug.Print j
EndeA = Worksheets("1").Cells(Rows.Count, 1).End(xlUp).Row
'legt das Ende des ersten Bereiches fest
EndeB = Worksheets("2").Cells(Rows.Count, 1).End(xlUp).Row
'legt das Ende des zweiten Bereiches fest
For i = EndeA to 1 Step -1
For j = 1 To EndeB
If Sheets("1").Cells(i, 2) = Sheets("2").Cells(j, 1) Then _
Sheets("1").Rows(i).Delete
Exit For
Next j
Next i
End Sub

Anzeige
AW: gleiche Zeilen löschen
29.10.2017 13:25:50
Daniel
Hi
dein Fehler wurde dir ja schon genannt.
ich würde aber folgende Methode bevorzugen, weil sie schneller ist und im Bedarfsfall auch mal angewendet werden kann, ohne dass man erst ein Makro schreiben muss:
Kennzeichne per Formel alle Zeilen die gelöscht werden sollen mit 0 und alle die stehen bleiben müssen mit der aktuellen Zeilennummer.
Dann kannst du die Zeilen mit der Funktion DATEN - DATENTOOLS - DUPLIKATE ENTFERNEN und der Hilfsspalte als Kriterium löschen.
Die Markierungformel wäre in deinem Fall:
=Wenn(istZahl(Vergleich(B1;'2'!A:A;0));0;Zeile())
in die Zeile 1 der Hilfspalte muss noch die 0, die Zeile 1 bleibt immer stehen, aber das ist ja in der Regel auch die Überschrift.
geht natürlich auch als Makro:
With Sheets("1").Usedrange
With .Columns(.columns.Count + 1)
.FormulaR1C1 = "=IF(ISNUMBER(MATCH(RC2,'2'!C1,0)),0,ROW())"
.Cells(1, 1).Value = 0
.EntireRow.RemoveDuplicates .column, xlno
.ClearContents
end with
end with
wenns richtig schnell gehen soll bei größeren Datenmengen, müsste man die Tabelle "2" noch nach Spalte A aufsteigend sortieren und dann mit dem SVerweis mit 4. Parameter = wahr überprüfen, ob der Wert aus Tabelle "1" in Tabelle "2" vorhanden ist.
Gruß Daniel
Anzeige

285 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige