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
Anzeige