Registriert seit: 22.04.2016
Version(en): 2016
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?
Registriert seit: 17.04.2014
Version(en): MS Office 365(32)
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
Registriert seit: 14.04.2014
Version(en): 2003, 2007
02.03.2017, 11:10
(Dieser Beitrag wurde zuletzt bearbeitet: 02.03.2017, 11:10 von atilla.)
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
Registriert seit: 22.04.2016
Version(en): 2016
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.
Registriert seit: 10.04.2014
Version(en): 97-2019 (32) + 365 (64)
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)