Anzeige
Archiv - Navigation
1572to1576
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

Duplikate entfernen (sehr viele)

Duplikate entfernen (sehr viele)
07.08.2017 10:21:16
Christian
Hallo,
bitte helft mir.
habe jetzt eine Tabelle von A1 bis VLG421. (15191 Spalten)
Jetzt meine Frage, was ist die schnellste Möglichkeit, Spalte für Spalte Duplikate zu entfernen, jeweils immer eine Spalte für sich genommen?
Gruß
Christian

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Duplikate entfernen (sehr viele)
07.08.2017 10:27:44
dirk
Hallo!
Du müsstest schon etwas genauer beschreiben, wie Deine Duplikate aussehen, und wie Du Diese entfernen möchtest. z.B. Nur die Zelle entfernen, oder die ganze Zeile?
Gruss
Dirk aus Dubai
AW: Duplikate entfernen (sehr viele)
07.08.2017 10:33:02
Christian
Hallo Dirk,
nein, nur die doppelte Zelle, nicht die ganze Zeile.
Ich will das dasselbe passiert, wie wenn ich Spalte A markiere und die Duplikate Entfernen Funktion nutze, bzw. in dem Fenster auch nur den Haken dann bei Spalte A setze.
Dann dasselbe bei Spalte B, dann bei C usw.
Nur das würde ja Jahre dauern wenn ich das alles von Hand einzeln mache.
Gruß
Christian
Anzeige
AW: Duplikate entfernen (sehr viele)
07.08.2017 10:48:50
Christian
und es ist nur eine einzige Spalte mit 421 Einträgen, in den meisten Spalten steht nur 1 oder 2 Texte.
Leerzellen zwischen 2 Texten gibt es keine.
AW: Duplikate entfernen (sehr viele)
07.08.2017 10:52:37
Matthias
Hallo
Dim x As Long, MyCalcMod
MyCalcMod = Application.Calculation 'Zustand merken
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
For x = 1 To 15191
ActiveSheet.Columns(x).RemoveDuplicates Columns:=1, Header:=xlNo
Next
Application.Calculation = MyCalcMod 'Zustand wiederherstellen

evtl. Header:=xlNo umstellen auf xlYes
Ich weß ja nicht, ob es Überschriften gibt.
Gruß Matthias
Anzeige
AW: Duplikate entfernen (sehr viele)
07.08.2017 10:58:24
Christian
Hallo Matthias,
hab leider von Makros wenig Ahnung.
Ich muss da jetzt einfach z.B. obendrüber

Sub Duplikate
und untendrunter End 

Sub schreiben
und dann über Alt+F11 in den VBA Code der entsprechenden Tabelle packen
oder ist abgesehen von dem Header noch mehr zu tun?
Gruß
Christian

Ja, und Testen besser immer an einer Kopie owT
07.08.2017 11:06:05
Matthias
es sind alles URL's also Text...
07.08.2017 10:34:58
Christian
.
AW: es sind alles URL's also Text...
07.08.2017 11:09:28
Werner
Hallo Christian,
hier meine Version, die letzte Spalte wird anhand der Daten in Zeile 1 ermittelt.
Die letzte Zeile wird für jede Spalte variabel ermittelt.
Code in eine allgemeines Modul.
Option Explicit
Public Sub Duplicate_raus()
Dim loletzteSpalte As Long
Dim loletzteZeile As Long
Dim i As Long
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Worksheets("Tabelle1") 'anpassen
loletzteSpalte = .Cells(1, .Columns.Count).End(xlToLeft).Column
For i = 1 To loletzteSpalte
loletzteZeile = .Cells(.Rows.Count, i).End(xlUp).Row
.Range(.Cells(1, i), .Cells(loletzteZeile, 1)).RemoveDuplicates Columns:=i, Header:= _
xlNo
Next i
End With
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
Gruß Werner
Anzeige
AW: es sind alles URL's also Text...
07.08.2017 12:18:06
Christian
Hallo Werner,
ich muss jetzt doch mal ganz dumm nachfragen.
Die Tabelle heißt Tabelle1
jedoch im VBA Editor ganz oben links steht Tabelle10 (Tabelle1)
was muss ich denn nun eintragen? 10 oder 1?
Gruß
Christian
Das was in der Klammer steht. o.w.T.
07.08.2017 12:32:27
Werner
AW: Das was in der Klammer steht. o.w.T.
07.08.2017 12:45:58
Christian
Hallo Werner,
dann bekomme ich einen Laufzeitfehler 1004. Beim debuggen wird
.Range(.Cells(1, i), .Cells(loletzteZeile, 1)).RemoveDuplicates Columns:=i, Header:= _
xlNo
markiert.
Gruß
Christian
AW: es sind alles URL's also Text...
07.08.2017 11:19:18
dirk
Hallo!
Schau mal hier: https://www.thespreadsheetguru.com/the-code-vault/2015/2/24/vba-code-remove-duplicate-cell-values-or-entire-rows
Dort ist ein Macro zum entfernen doppelter Einträge in Zellen.
Gruss
Dirk aus Dubai
Anzeige
Fazit
07.08.2017 15:34:38
Christian
Hallo an euch 3,
danke nochmal für eure Unterstützung.
Matthias, dein Vorschlag hat zwar sehr lange gedauert, aber er hat funktioniert.
Werner, wie gesagt bei deinem Vorschlag kam der Laufzeitfehler.
Dirk, wenn ich deinen Link reichtig verstehe, meldet das Makro wenn mehrere Spalten ausgewählt wurden und bittet dann eine konkrete zu nennen. Sieht für mich so aus als müsste das Makro was das anbelangt ziemlich auf meine Bedürfnisse angepasst werden.
Was ja dank Matthias nicht mehr nötig ist.
Aber mir ist jetzt beim weiteren Verarbeiten des Ergebnisses noch etwas aufgefallen, wo ich vielleicht auch noch eure Hilfe brauche. Ist aber denke ich nichts großartiges.
Ich hatte bevor ich euch geschrieben hatte, die Daten transponiert, damit die Duplikate untereinander stehen, ich dachte nebeneinander Duplikate finden kann Excel nicht (zumindest nicht mit der normalen Funktion in den Datentools).
Jetzt hab ich das Ergebnis zurück transponiert. Alles soweit ok.
Nur jetzt mein Problem, ich bin vorher mit Strg+Ende hingegangen um die letzte, genutzte Spalte herauszufinden. Da Duplikate gelöscht wurden, lande ich jetzt mit Strg+Ende in der falschen Spalte(immer noch in der die die letzte vor dem Duplikate löschen war) Kann man da was machen?
Gruß
Christian
Anzeige
AW: Fazit
07.08.2017 17:45:39
Piet
Hallo Christian,
wie hast du die letzte Spalte gelöscht? Excel merkt sich immer den Used Range!!
Wenn du nur die Inhalte in der Spalte gelöscht hast, aber nicht die ganze Spalte als Komplett Spalte bleibt der UsedRange bei dieser letzten Spalte erhalten. Du must sie mit der rechten Maustaste als ganze Spalte löschen, abspeichern und Excel schliessen. Beim Öffnen prüft er den aktuellen UsedRange Bereich. So wirst du überflüssige Spalten und Zeilen los. Es verkleinert auch die Speicherkapazitaet bei "aufgeblaehten" Dateien!
mfg Piet
AW: Fazit
07.08.2017 18:17:52
Christian
Hallo Piet,
ich habe den Inhalt der Spalten transponiert in ein anderes Tabellenblatt eingefügt, um Duplikate zu löschen.
Und dann nochmal transponiert wieder ins Originalblatt eingefügt, daher sind jetzt weniger Spalten in Benutzung. Aber wenn du sagst, es reicht, die Spalten zu löschen, probiere ich das nachher mal aus.
Gruß
Christian
Anzeige
AW: Fazit
07.08.2017 18:41:08
Daniel
Hi
beim Duplikate-Entfernen findet keine neuberechnung der UsedRange statt.
das passiert erst beim nächsten Öffnen der Datei
eben so werden, falls du Formeln hast die sich auf die so bearbeitete Tabelle beziehen, diese nicht angepasst.
Das das alles nicht passiert, ist mit ein Grund warum das Duplikate-Entfernen so schnell ist.
im Code von Werner ist nur ein kleiner Flüchtigkeitsfehler drin.
du musst zweiten Cells ebenfalls die Variable i als Spaltennummer eintragen ("i" wird leider leicht mit 1 verwechselt)

.Range(.Cells(1, i), .Cells(loletzteZeile, i))

außerdem musst du die Programmzeilen ohne Zeilenumbruch (Unterstrich _ ) angeben.
der Editor des Forums fügt diese automatisch bei langen Zeilen ein, allerdings sind diese dann vom VBA-Editor nicht verarbeitbar, weil sie an unpassender Stelle sitzen oder sonstwie nicht passen:
dh mache aus
...)).RemoveDuplicates Columns:=i, Header:= _
xlNo

eine Zeile:
...)).RemoveDuplicates Columns:=i, Header:=xlNo
Gruß Daniel
Anzeige
AW: Fazit
07.08.2017 19:19:32
Christian
Hallo Daniel,
das mit den Spalten löschen hat funktioniert.
Ich hab leider versehentlich die Ursprungsdatei mit den Duplikaten überschrieben.
Hab also leider nichts mehr für weitere Tests.
Gruß
Christian

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige