Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1156to1160
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

Duplikate entfernen
Thomas
Hallo zusammen,
ich habe via Suchfunktion nach einer Möglichkeit gesucht, Duplikate aus mehreren Spalten herauszufiltern, aber irgendwie nichts passendes gefunden, daher der neue Beitrag.
Folgende Aufgabenstellung:
- 6 Spalten mit Materialnummern (Zahlen, Alpha-numerisch)
Ich brauche eine Liste, in welcher nur die "Originale" aufgeführt sind, vorzugsweise NICHT mit VBA
Danke und Gruss //Thomas
ohne, dass ich ne Idee habe, aber...
20.05.2010 14:49:11
Oberschlumpf
...Hi Thomas
Könntest du denn den möglichen Antwortern eine Bsp-Datei zur Verfügung stellen?
Denn ohne Datei müsste nun jeder 6 Spalten mit "deinen" Nummen füllen - bevor - derjenige überhaupt mit Testen beginnen könnte.
Ciao
Thorsten
Spezialfilter probiert?
20.05.2010 15:35:05
JOWE
Hallo Thomas,
-kopiere den Inhalt der Spalten B - F in die Spalte A (natürlich unter- und hintereinander weg)
-Setze das Spezialfilter für den neuen Datenbereich ein (Daten-Filter-Spezialfilter)
-Aktion: an andere Stelle kopieren
-Listenbereich: Der neue Datenbereich
-kopieren nach: z. B1
-keine Duplikate
-OK
Gruß
Jochen
Anzeige
AW: Spezialfilter probiert?
20.05.2010 15:49:47
Thomas
Funzt nicht wirklich, da die 6 Spalten fast alle bis unten gefüllt sind (~65t Einträge)
AW: Spezialfilter probiert?
20.05.2010 15:50:50
Thomas
Funktioniert nicht wirklich, da die 6 Spalten fast alle bis zum "Anschlag" gefüllt sind. (~65.000 Einträge)
AW: Spezialfilter probiert?
21.05.2010 10:17:59
JOWE
Hallo Thomas,
heute morgen fiel mir ein, dass man das über ein Array lösen könnte:
Hier die Idee:
Alle Daten in ein Array einlesen,
das Array sortieren,
Doppler aus dem Array löschen,
das Array nochmal sortieren
Hier die notwendigen Prozeduren:
Option Explicit
Public lngC, lngZ As Long
Public sam As New Collection
Sub Unique_Data()
Call Array_einlesen
Call Array_sortieren
Call Array_doppelte_löschen
Call Array_sortieren
End Sub

Sub Array_einlesen()
Dim wsQ As Worksheet
Dim r As Range
Dim z As Object
Set wsQ = ThisWorkbook.Sheets("Tabelle1")
Set r = wsQ.Range("A1:F32")
For Each z In r
sam.Add z
Next
End Sub

Sub Array_sortieren()
Dim strTemp
For lngZ = 1 To sam.Count - 1
For lngC = 1 To lngZ
If sam(lngC) > sam(lngZ) Then
strTemp = sam(lngZ)
On Error Resume Next
sam(lngZ) = sam(lngC)
sam(lngC) = strTemp
End If
Next
Next
End Sub

Sub Array_doppelte_löschen()
For lngZ = sam.Count - 1 To 1 Step -1
If sam(lngZ) = sam(lngZ + 1) Then
sam(lngZ) = ""
End If
Next
End Sub

Auszuführen ist das Makro 'Unique_Data()'
Gruß
Jochen
Anzeige
das hast du aber ...
21.05.2010 11:56:56
Rudi
Hallo,
... nicht getestet.
1. bleiben Duplikate übrig.
2. läuft der Code schon bei der geringen Anzahl (192 Zellen) über 7 Sekunden. Was wird dann bei 6 fast komplett gefüllten Spalten?
Udos Code hingegen ist selbst bei 40.000 Zeilen x 6 Spalten schneller als deiner.
Gruß
Rudi
Schön, dass Du mithilfst Lösungen zu finden... oT
21.05.2010 12:03:12
JOWE
AW: Duplikate entfernen
20.05.2010 22:59:52
Uduuh
Hallo,
ohne VBA habe ich keine Lösung.
falls es mehr als 65536 unterschiedliche MatNr sind, knallt es:
Sub MatNr()
Dim c As Range, oMat As Object
Set oMat = CreateObject("scripting.dictionary")
For Each c In Range("A:F").SpecialCells(xlCellTypeConstants)
If Not oMat.exists(c.Value) Then oMat.Add c.Value, ""
Next c
Cells(1, 8).Resize(oMat.Count) = Application.Transpose(oMat.keys)
End Sub

Gruß aus’m Pott
Udo

Anzeige
AW: Duplikate entfernen
21.05.2010 12:13:29
JOWE
Hallo Udo,
habe erst jetzt - nach dem Ansch...' von Rudi - Deinen Code gesehen, sorry.
Aber das ist echt klasse, kannst Du mir dass Konstrukt bitte mal eräutern?
Gruß
Jochen
AW: Duplikate entfernen
21.05.2010 12:38:22
Rudi
Hallo,
darf ich auch?
Das Dictionary-Objekt nimmt Schlüssel-Wert Paare auf. Die Schlüssel müssen eindeutig sein, sonst Fehler.
Das Vorhandensein eines Schlüssels kann man einfach mit der Exists-Methode abfragen.
Weiterer Vorteil des Objekts: sehr schnell und man kann die Schlüssel und Werte einfach in Arrays packen.
Schau mal in die Hilfe.
Gruß
Rudi
finde in Excel- o. Excel-VBA-Hilfe nix
21.05.2010 12:46:13
JOWE
Hallo Rudi,
welche Hilfe?
Gruß
Jochen
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige