Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1832to1836
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

Alle nicht doppelten Zeilen löschen

Alle nicht doppelten Zeilen löschen
20.06.2021 12:32:33
Ingo
Hallo
Ich habe eine Tabelle mit ca. 20.000 Zeilen.
Es gibt nur eine Spalte (A).
Die Zeilen sind alphabetisch sortiert.
Die Tabelle enthält doppelte Werte.
Ich möchte nun gerne alle Zeilen löschen, die nicht doppelt sind.
Es sollen also nur die doppelten übrig bleiben.
Ich finde leider nicht heraus, wie ich das per Makro machen kann.
Bisher habe ich es immer so gemacht:
* Per "bedingter Formatierung" die doppelten Zellen in hellrot füllen.
* Dann per Filter nach Farbe filtern.
Das hat aber den Nachteil, dass es sehr lange dauert. Und im Grunde ist es ja eh ein umständlicher Umweg, denke ich.
Gibt es da eine gescheitere Lösung, die vor Allem auch sehr schnell läuft?
Gruß
Ingo

19
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 12:42:46
onur
"Es sollen also nur die doppelten übrig bleiben" - sollen sie doppelt übrigbleiben oder nur einfach?
Was ist mit 3-fach usw vohandenen?
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 12:50:37
Ingo
Hallo @onur
In der Tabelle gibt es keine 3-fachen, 4-fachen usw.
Es gibt nur 1-fache und doppelte.
Am liebsten sollen die doppelten letztendlich nur einfach übrig bleiben.
Beispiel:
Tabelle mit 20.000 Zeilen
45 davon sind doppelt.
Am Ende bleibt eine Tabelle übrig, in der diese 45 Zeilen sind, die ursprünglich doppelt waren.
Gruß
Ingo
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 13:22:41
Hajo_Zi
Hallo Ingo,
Hilfsspalte mit Zählenwenn()
Benutze Autofilter und Kopiere den sichtbaren Bereich, Start, Bearbeiten, Suchen..., Gehe zu, Inhalte, sichtbare Zellen.
Excel hat auch einen Makrorecorder.
GrußformelHomepage
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 13:38:38
GerdL
Hallo Ingo!
Das Herber-Forum hat zwar keinen Makrorekorder, aber ansonsten sehr verschiedene. :-)

Sub Unit()
With Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
.FormulaR1C1 = "=IF(COUNTIF(R1C1:RC1,RC1)>1,ROW(),TRUE)"
.Formula = .Value
If WorksheetFunction.CountIf(.Cells, True) > 0 Then
.SpecialCells(xlCellTypeConstants, xlLogical).Offset(, -1).Delete
End If
.Clear
End With
End Sub
Gruß Gerd
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 13:45:53
Ingo
Hallo Gerd
Ah ja cool. Habe das sogleich ausprobiert.
Damit werden ja alle Zellen, die nicht doppelt sind, mit dem Wert "WAHR" versehen, richtig?
Und ich brauche dann ja nur noch einen Filter, der die "WAHR"-Zeilen rausfiltert drinhängen.
War das von Dir so gedacht?
Gruß
Ingo
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 13:56:41
Daniel
Das ist mit Sicherheit sehr langsam.
1. fürs ermittelt ob doppelt oder einfach muss jedes ZählenWenn alle 20.000 Zeilen durcharbeiten und mit dem aktuellen Wert vergleichen (20.000*20.000 Vergleiche)
Ist hier aber nicht notwendig, da die Liste schon sortiert ist, reicht es aus, einen Zellwert mit den beiden Nachbarzellen zu vergleichen um herauszufinden, ob er doppelt oder einfach ist, damit reichen 2*20.000 Vergleiche.
2. Beim Löschen von Zeilen hängt der Zeitaufwand nicht davon ab, wieviele Zeilen gelöscht werden sollen, sondern wie zerteilt die Zellen sind.
Dh. Range("1:10000"). Delete dauert nicht länger als Range("1:1").delete.
Range("1:1,3:3").Delete dauert hingegen schon doppelt so lange.
Dh du solltest vor dem Löschen nochmal nach Spalte B sortieren.
Beim Sortieren ist Excel sehr schnell.
Gruß Daniel
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 15:04:53
Ingo
Hallo Daniel
Das was der Gerd da gecodet hat, funktioniert schon mal sehr sehr viel schneller, als meine alte Lösung. Mit der Geschwindigkeit kann ich gut leben jetzt.
Ich würde das schon gerne noch nach den von Dir gemachten Ansagen anpassen, aber das ist mir leider zu hoch. Ich verstehe leider auch nur ein ganz kleines bisschen, was der Code vom Gerd da genau macht. Dafür ist mein VBA einfach viel zu schlecht leider.
Gruß
Ingo
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 16:57:44
Daniel
Der Code von Gerd macht das, was MichaelL beschrieben hat.
AW: MichalL? hab ich diesen hier überlesen? owT
20.06.2021 17:59:10
neopa
Gruß Werner
.. , - ...
AW: MichalL? hab ich diesen hier überlesen? owT
20.06.2021 18:04:17
Daniel
danke für den Hinweis, meine natürlich MatthiasL
Delete geht nicht. Kann das sein?
20.06.2021 15:01:59
Ingo
Hallo Gerd
Ich nochmal :-)
Kann es sein, dass das mit dem Delete in Deinem Code nicht funktioniert? Oder war es von Dir so beabsichtigt, dass die Zeilen mit "WAHR" stehen bleiben? Ich habe das noch nicht so ganz begriffen.
Gruß
Ingo
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 13:43:48
Daniel
Hi
Nutze eine Hilfsspalte um die doppelten und einfachen unterschiedlich zu markieren so dass du gezielt auf die einfachen zugreifen kannst.
Bei deiner Konstellation geht das am besten so:
1. die Daten sollten in Zeile 2 beginnen und Zeile 1 die Überschrift sein.
2. füge in B2 folgende Formel ein und ziehe sie nach unten:
=Wenn(oder(A2=A1;A2=A3);Zeile();0)
3. Schreibe in B1 die 0
4. wende auf A:B die Funktion Daten - Datentools - Duplikate entfernen an mit Spalte B als Kriterium und der Option "keine Überschrift"
5. lösche die Spalte B wieder.
Das ist bei deiner Datenmenge das schnellste.
Die Alphabetische Sortierung so dass doppelte Werte direkt untereinander stehen, ist für eine hohe Geschwindigkeit Voraussetzung.
Gruß Daniel
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 13:46:28
Günther
Moin,
mit der Power Query-Funktionalität problemlos machbar: Daten | Abrufen und transformieren, Aus Tabelle, Gruppieren und dann filtern.
 
Gruß
Günther  |  mein Excel-Blog
das geht ganz einfach ohne VBA
20.06.2021 13:48:50
Matthias
Hallo Ingo
Erstelle in Zeile(1) eine je Überschrift (Bsp. hier für die Spalten ("A, B")
Schreibe in eine Hilfsspalte (hier )ab ("B2") die Formel:

=WENN(ZÄHLENWENN(A:A;A2)>1;1;0)
Nun filterst Du nach Spalte("B")
Ja nachdem was Du löschen willst filterst Du nach 0 oder 1
Diesen Bereich dann markieren und die Daten mit Entf löschen.
Filter wieder entfernen und fertig. Ohne VBA und sehr schnell.
Gruß Matthias
das ist wohl doch nicht so schnell ...
20.06.2021 14:13:26
Matthias
Versuch ne andere Variante. owT
AW: das ist wohl doch nicht so schnell ...
20.06.2021 14:34:37
Daniel
Wenn du wissen willst warum, dann schau mal was ich Gerd geschrieben habe.
Er verwendet ja das gleiche, nur eben als Makro.
Gruß Daniel
Anzeige
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 16:04:43
GerdL
Moin,
da war noch etwas Blödsinn drin. :-)

Sub Unit()
With Range("B1:B" & Cells(Rows.Count, 1).End(xlUp).Row)
.FormulaR1C1 = "=IF(COUNTIF(R1C1:RC1,RC1)>1,ROW(),TRUE)"
.Formula = .Value
If WorksheetFunction.CountIf(.Cells, True) > 0 Then
Columns("A:B").Sort Key1:=Range("B2"), Order1:=xlAscending, Header:=xlNo
.SpecialCells(xlCellTypeConstants, xlLogical).EntireRow.Delete
End If
.Clear
End With
End Sub
Gruß Gerd
AW: Alle nicht doppelten Zeilen löschen
20.06.2021 18:45:09
Ingo
Hallo Gerd
Ah ja alles klar. Jetzt funktioniert es wunderbar.
Danke.
Gruß
Ingo

313 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige