Array Duplikate entfernen und transponieren

Bild

Betrifft: Array Duplikate entfernen und transponieren
von: Bonduca
Geschrieben am: 09.09.2015 17:12:12

Hallo,
ich möchte gerne B4:B500 in einen Array einlesen, die darin enthaltenen Duplikate entfernen und dann in ein anderes Tabellenblatt in D11: SI11 einfügen.
Ich habe bisher eine Lösung mit dem Makrorekorder. Die ist aber etwas langsam und umständlich (ich kopiere den Inhalt von Spalte B in eine andere Spalte, lösche mit Daten-Duplikate entfernen die Duplikate, kopiere es erneut und füge es dann transponiert in Zeile 11 ein.
Weiß jemand eine Lösung?
Vielen Dank!

Bild

Betrifft: AW: Array Duplikate entfernen und transponieren
von: Daniel
Geschrieben am: 09.09.2015 17:36:15
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

Bild

Betrifft: AW: Array Duplikate entfernen und transponieren
von: Bonduca
Geschrieben am: 10.09.2015 08:35:13
Klasse, vielen Dank, Daniel.
So schön kurz und knapp war mein Code nicht ;).
Ich probier einfach beides aus :D

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Array Duplikate entfernen und transponieren"