Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1504to1508
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

dynamsiches RemoveDuplicates in VBA

dynamsiches RemoveDuplicates in VBA
13.07.2016 11:15:49
Claus
Hallo zusammen,
mit dem MacroRecorder habe ich mir folgende RemoveDuplicates-Zeile ermittelt:
ActiveSheet.Range("$A$1:$BW$5282").RemoveDuplicates Columns:=Array(1, 2, 3, 4, 5, _
6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33 _
, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, _
60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75), Header:=xlYes~f~
Mein Problem ist folgendes: Ich Weiss, dass ich in absehbarer Zeit die Anzahl der Spalten im Array mehrmals verändern werden muss. Also will ich den Befehl dynamisch machen.
Folgendes habe ich ausprobiert:
1. Gemäss der Excel-Hilfe ist "Columns" optional und es warden alle Spalten angenommen, wenn der Parameter nicht angegeben wird
=> Bei mir funktioniert das nicht => Es sind immer noch Duplikate vorhanden.
2. Wenn ich den Array definiere über eine Variable, die ich aus einem String bilde
"1,2,3,4,5,6,...." => val("1,2,3,4,5,6,..") => 1) funktioniert das zwar ohne Fehlermeldung, aber die Dupliakte warden nicht entsorgt.
3. ActiveSheet.Range("$A$1:$BW$5282").RemoveDuplicates beseitigt die Duplikate auch nicht...
Meines Erachtens nach sollte es nicht am ausgewählten Range liegen, den ich dynamisch über folgende Sequenz bilde:
~f~
Cells(1, 1).Select
ActiveCell.SpecialCells(xlCellTypeLastCell).Select
ActiveSheet.Range(Cells(1, 1), Cells(ActiveCell.Row, ActiveCell.Column)).RemoveDuplicates
Also, wie kann ich das dynamisch machen, und vor allem effektiv. Ich will ungern jedesmal das Makro anpassen müssen...
Danke schon vorab für Eure Hilfe.
Gruss
Claus

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: dynamsiches RemoveDuplicates in VBA
13.07.2016 13:09:38
Rudi
Hallo,
wenn immer alle Spalten verglichen werden sollen:
Sub RemoveDuplicatesA()
Dim i As Long, j As Long, vArr, objDic As Object, sKey
Dim rngDel As Range
vArr = Cells(1, 1).CurrentRegion
Set objDic = CreateObject("scripting.dictionary")
For i = 1 To UBound(vArr)
sKey = ""
For j = 1 To UBound(vArr, 2)
sKey = sKey & vArr(i, j)
Next j
If objDic.exists(sKey) Then
If rngDel Is Nothing Then
Set rngDel = Cells(i, 1)
Else
Set rngDel = Union(rngDel, Cells(i, 1))
End If
End If
objDic(sKey) = 0
Next
If Not rngDel Is Nothing Then rngDel.EntireRow.Delete
End Sub

Gruß
Rudi

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige