Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

RemoveDuplicates auf UsedRange
#1
Hallo Community!

Ich versuche momentan mittels VBA Duplikate innerhalb meiner UsedRange zu entfernen. Die UsedRange bezieht sich auf die Spalten A:S. Die letzte Zeile ist jedoch nicht bekannt. Wie bekomme ich nun diesen Zusammengang hin?

Ich bin nun auf folgendes gekommen, aber irgendwie funktioniert dies nicht so ganz :/
Code:
tblTest.Range("A2:S" & Range("A" & Rows.Count).End(xlUp).Row).RemoveDuplicates Array(2, 3, 4, 6, 7, 8, 9), xlYes
Über die Funktion "Duplikate entfernen" mit den entsprechenden Spalten, bekomme ich ein anderes bzw. das richtige Ergebnis.
Wo genau liegt mein Fehler?
Antworten Top
#2
Hallo,
tblTest.Range("A2:S" & tblTest.Range("A" & Rows.Count).End(xlUp).Row).RemoveDuplicates Array(2, 3, 4, 6, 7, 8, 9), xlYes
Gruß Uwe
Antworten Top
#3
Hallo Joshua,

UsedRange bezieht sich auf den zuletzt gespeicherten benutzten Bereich.

Die jetzige Variante ermittelt die letzte Belegte Zeile aus Spalte A.
Ob das Sinn macht aus A  auszulesen musst Du entscheiden.

Edit:
und natürlich die Ergänzung von Uwe ist sehr wichtig, die letzte Zeile aus der richtigen Tabelle ermitteln
Gruß Atilla
Antworten Top
#4
Hallo Uwe, hallo Atilla,

vielen Dank für eure Antworten.

Auch mit Uwes Lösung komme ich dennoch auf ein falsches Ergebnis bzw. anderes als über die Funktion "Duplikate entfernen".
Laut Makrorekorder bekomme ich folgendes heraus:

Code:
   ActiveSheet.Range("$A$1:$S$901").RemoveDuplicates Columns:=Array(2, 3, 4, 6, 7, 8, _
       9), Header:=xlYes
Auch wenn ich mich auf die letzte Zeile in B beziehe, komme ich auf ein anderes Ergebnis.
Antworten Top
#5
Hallöchen,

dazu drei Anmerkungen.

1. Wenn Du Deinen zuletzt aufgezeichneten Code ausführst, kommt da das erwartete Ergebnis raus?
2. Wenn Du diesen Teil tblTest.Range("A" & Rows.Count).End(xlUp).Row) in die Überwachung nimmst, kommt da 901 raus?
3. Wenn Du im Code von Uwe tblTest durch ActiveSheet ersetzt, das Blatt aktivierst und den Code dann ausführst, ist das Ergebnis dann korrekt?

Wenn Du Listen bzw. eingefügten Tabellen verwendest, bräuchtest Du die letzte Zeile nicht zu ermitteln
Der Code dafür würde aufgezeichnet in etwa so aussehen:

Code:
ActiveSheet.Range("Tabelle1[#Alle]").RemoveDuplicates Columns:=Array(1, 2), _
        Header:=xlYes
und bringt bei Ausführung einen Fehler. Man muss [#Alle] entfernen.
.      \\\|///      Hoffe, geholfen zu haben.
       ( ô ô )      Grüße, André aus G in T  
  ooO-(_)-Ooo    (Excel 97-2019+365)
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste