Ohne Duplikate per VBA m. Ranges u."Zellmitnahme"
03.03.2008 11:57:27
Andreas
ich habe mich gerade an der Listenerstellung ohne Duplikate mittels VBA versucht. Bisher habe ich derartige Aufgaben immer über eine Formel von der excelformeln.de Webseite gelöst. Aber heute habe ich feststellen müssen, daß bei 1.500 zu prüfenden Zeilen die Performance dieser Array Formel nicht mehr annehmbar ist. Also machte ich mich auf die Suche nach einem passenden Code nicht nur hier im Herber Forum. Ich habe keinen gefunden und es leider auch nicht geschafft, zum Teil sehr komplexe Codes, die mir begegneten umzuschreiben.
Eine Voraussetzung ist, daß die Filterung nicht auf Sheets mit fixen Bereichen referenzieren soll, sondern auf Ranges, die mit Namensdefinitionen arbeiten [Range(Namensdef._1)].
Ich habe den ersten Code mit dem Makro Rekorder generiert und auf meine Ranges angepaßt. Hat funktioniert. Aber: Wenn ein Code startet, der die Funktion AdvancedFilter verwendet, werden die gesetzten (regulären) Filter im Tabellenblatt gelöscht. Sie müssen aber erhalten bleiben.
Außerdem hat sich im Laufe der letzten zwei Stunden gezeigt, daß leere Zellen in der Liste ohne Duplikate nicht auftauchen sollen. Und: Ich filtere ohne Duplikate in Spalte D, möchte jedoch die dazugehörigen Merkmale in Spalte A beim transferieren in den Zielbereich mitnehmen, ohne das in Spalte A irgend etwas gefiltert wird.
Dieses bringt für mich eine Komplexität mit sich, die ich nicht mehr lösen kann. Der einzige Filterweg ohne Duplikate für mich bisher war entweder die Formel oder AdvancedFilter. Beides scheidet aus. Einen Code umschreiben und auf Ranges münzen habe ich in unzähligen ruhigen Versuchen leider nicht hinbekommen. Ich wüsste auch nicht mal einen Ansatz, denn macht es Sinn, eine Schleife über einen Bereich von 1.500 Zeilen zu jagen? Ich vermute das die Performance dann auch nicht die beste ist.
Wißt ihr Rat? Über welchen Ansatz würdet ihr das realisieren?
Vielen Dank für Eure Hinweise und Kopfzerbrechen.
https://www.herber.de/bbs/user/50382.xls
Liebe Grüße, Andreas Hanisch