AW: Array Duplikate entfernen und transponieren
09.09.2015 17:36:15
Daniel
Hi
naja, langsam oder umständlich finde ich jetzt keine der beiden Lösungen:
hier mal beide Varianten im Vergleich, zu erst die Array-Variante, dann das von dir beschriebene kopieren und Transponieren:
Sub Transponieren1()
Dim arr, a
Dim dic
Set dic = CreateObject("scripting.dictionary")
arr = Range("B4:B500").Value
For Each a In arr
dic(a) = 1
Next
Range("D11").Resize(1, dic.Count) = dic.keys
End Sub
Sub Transponieren2()
Range("B4:B500").Copy
Range("C4").PasteSpecial (xlPasteValues)
With Selection
.RemoveDuplicates 1, xlNo
.Copy
Range("D12").PasteSpecial xlPasteValues, Transpose:=True
.ClearContents
End With
End Sub
klar ist die Arrayvariante etwas schneller, davor braucht die CopyPaste-Variante weder Variablen, noch Schleifen, noch ein Fortgeschrittenenkonstrukt wie Dictionarys, sprich das kann sich auch ein Anfänger mit dem Recorder zuammenbasteln und man ist im Ablauf nicht viel langsamer als das Array/Dictionary.
gerade dann wenn du deine Makros noch viel im Einzelstep testen musst, hat die zweite Variante ihren Charme, weil du diese einfach durchklicken kannst und nicht an der Schleife hängen bleibst.
Gruß Daniel