Supportnet Computer
Planet of Tech

Supportnet / Forum / Tabellenkalkulation

VBA Collection





Frage

ich habe eine Collection erstellt, die ich mit Zeitwerten befülle. Ich möchte dann diese Collection Absteigend sortieren. Das habe ich nicht hinbekommen und versucht die Werte gleich beim einfügen in die Collection zu sortieren. Das klappt auch nicht wirklich. Kann man eine Collection im nachhinein sortieren? Ohne großen Aufwand wenn möglich?

Antwort 1 von Saarbauer

Hallo,

da deine Angaben etwas mager sind, könnte mit "Daten";Sortieren" funktionieren.

Sonst solltest du mal genauer erklären was du vorhast und was du unter Collection verstehst, sowie den Aufbau deiner Tabelle.

U.U. ist dein Problem auch mit einem aufgezeichneten Makro zu lösen, falls du eine VBA-Lösung brauchst

Gruß

Helmut

Antwort 2 von vollmondgierig

also ich denke ich habe das problem mittlerweile selbst gelöst.

hab die werte aus einer spalte eines tabellenblatts gezogen und wollte die eben innerhalb der collection sortieren um die höchsten 5 werte ausgeben zu können

jetzt hab ich mich aber für ein array entschieden und eine variante gefunden dieses array noch zu sortieren. ob das klappt stellt sich gleich heraus


allerdings hab ich feststellen müssen, dass der redim befehl bei zweidimensionalen arrays nicht funktioniert. stimmt das?

Antwort 3 von Beverly

Hi,

bei mehrdimensionalen Arrays muss nur das letzte Feld variabel gestaltet werden:
arrWerte(0 To 2, 0 To loVariabel)

Um die 5 größten Werte aus einem Array auszulesen muss es nicht sortiert werden:
Cells(2, 1) = WorksheetFunction.Max(arrWerte())
Cells(3, 1) = WorksheetFunction.Large(arrWerte(), 2)
Cells(4, 1) = WorksheetFunction.Large(arrWerte(), 3)
Cells(5, 1) = WorksheetFunction.Large(arrWerte(), 4)
Cells(6, 1) = WorksheetFunction.Large(arrWerte(), 5)

Einfacher wäre es allerdings, wenn du die Werte direkt aus der Tabelle auslesen würdest, da kannst du dir den Umweg über das Array sparen:
Cells(2, 1) = WorksheetFunction.Max(Range("C1:C1000"))
Cells(3, 1) = WorksheetFunction.Large(Range("C1:C1000"), 2)
Cells(4, 1) = WorksheetFunction.Large(Range("C1:C1000"), 3)
Cells(5, 1) = WorksheetFunction.Large(Range("C1:C1000"), 4)
Cells(6, 1) = WorksheetFunction.Large(Range("C1:C1000"), 5)


Bis später,
Karin

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: