Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Duplikate entfernen

Forumthread: Duplikate entfernen

Duplikate entfernen
25.04.2024 21:06:05
Helene
Schönen Abend,
mit der folgenden Code-Zeile werden Duplikate entfernt:
wks.Range("$A$1:$E$6").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5), Header:=xlNo

Das Array bei Columns wurde mittels Makrorekorder angeführt.

Wie kann ich das Array flexibel einsetzen, so das beim nächsten Mal, wenn der Bereich z.B. von A:K geht die Array-Angabe automatisch auf die Spalten von A:K Bezug nimmt.

MfG Helene
Anzeige

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Duplikate entfernen
25.04.2024 22:08:54
schauan
Hallöchen,

da Du nicht schreibst, wie Du zu Spalte K kommst, hier mal eine Variante, wo Du die Endspalte als Zahl einträgst:

Dim arrFolge, iCnt%, iCol%

iCol = 5 'Spalte E
ReDim arrFolge(1 To iCol)
For iCnt = 1 To iCol
arrFolge(iCnt) = iCnt
Next
wks.Range(Cells(1, 1), Cells(6, iCol)).RemoveDuplicates Columns:=arrFolge, Header:=xlNo
Anzeige
AW: Duplikate entfernen
25.04.2024 23:29:43
Helene
Hallo,
also etwas übersehe ich oder mache es falsch.

Ich habe mal die Datei angehängt.
https://www.herber.de/bbs/user/169041.xlsm

Die Zeile bei "RemoveDuplicates" wird gelb angezeigt und erscheint die Meldung:
Laufzeitfehler 5: Ungültiger Prozeduraufruf oder ungültiges Argument

MfG Helene
Anzeige
AW: Duplikate entfernen
26.04.2024 08:47:48
schauan
Hallöchen,

das ist aber schemain von Excel. :-( dass da unmittelbar kein variables Array geht. Anscheinend will die Funktion an der Stelle wirklich selber ein Array bilden ....
So sollte es klappen:
wks.Range(wks.Cells(1, 1), wks.Cells(8, iCol)).RemoveDuplicates Columns:=Evaluate(arrFolge), Header:=xlNo

Anzeige
Vielen Dank, Tiptop. Einen schönen Tag, MfG Helene
26.04.2024 09:18:51
Helene
Tja, habe mich leider zu früh gefreut.....
27.04.2024 19:45:36
Helene
Hallo,
scheinbar prüft "Evaluate(arrFolge)" bei RemoveDuplicates nur auf die erste Spalte.

Das habe ich aber erst nach einigen Tests gemerkt.

Hier nochmals der bisherige Code:
Sub DuplEntf()

Dim wks As Worksheet
Dim arrFolge, iCnt%, iCol%

Set wks = Tabelle4

iCol = 7 'die letzte Spalte muss ich noch ermitteln, im Beispiel ist es Spalte G, also 7
ReDim arrFolge(1 To iCol)

For iCnt = 1 To iCol
arrFolge(iCnt) = iCnt
Next

wks.Range(wks.Cells(1, 1), wks.Cells(8, iCol)).RemoveDuplicates Columns:=Evaluate(arrFolge), Header:=xlNo

Set wks = Nothing
End Sub


Hoffe dennoch auf eine Lösung,
MfG Helene
Hier nochmals die Tabelle:
https://www.herber.de/bbs/user/169098.xlsm

Anzeige
Jetzt habe ich die Lösung....
27.04.2024 21:37:22
Helene
gefunden.

Falls es interessiert, damit geht es mit meinem Beispiel:
Sub DuplEntf()

Dim wks As Worksheet
Dim lastcolumn As Long
Dim LastRow As Long
Dim i As Long

Set wks = Tabelle4
lastcolumn = 7
LastRow = 6

ReDim MyArray(lastcolumn - 1)

For i = 1 To lastcolumn
MyArray(i - 1) = i
Next i

wks.Range(wks.Cells(1, 1), wks.Cells(LastRow, lastcolumn)).RemoveDuplicates (MyArray), xlNo

End Sub



Anzeige
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige