Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1472to1476
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

Sortierung eines Arrays?

Sortierung eines Arrays?
31.01.2016 20:05:25
Kasimir
Hallo an Alle!
Ich bräuchte mal wieder Eure Hilfe. Mit nachfolgendem Makro fülle ich eine ComboBox in einem Tabellenblatt über ein Array.
Sub Array_füllen()
Dim lngRowNamen As Long
Dim lngEintrgasnummer As Long
Dim arr() As String
Erase arr
For lngRowNamen = 2 To Quelle.Cells(Rows.Count, 1).End(xlUp).Row
If WorksheetFunction.CountIf(Quelle.Range("D2:D" & lngRowNamen), _
Quelle.Cells(lngRowNamen, 4)) = 1 Then
lngEintrgasnummer = lngEintrgasnummer + 1
ReDim Preserve arr(1 To 2, 1 To lngEintrgasnummer)
arr(1, lngEintrgasnummer) = Quelle.Cells(lngRowNamen, 4)
arr(2, lngEintrgasnummer) = lngRowNamen
End If
Next
With Ziel.ComboBox1
.Clear
.ColumnCount = 2
.ColumnWidths = "4cm; 0cm"
If lngRowNamen > 0 Then _
.List() = WorksheetFunction.Transpose(arr)
End With
End Sub
Nun werden mir die Daten aber leider unsortiert zurückgegeben. Was muss ich tun, damit die Daten im Array sortiert werden und ich somit eine sortierte Auflistung erhalte?
Danke und Gruß,
Kasimir

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierung eines Arrays?
01.02.2016 10:10:57
Daniel
Hi
eine Möglichkeit:
kopiere die benötigten Daten in einen freien Bereich der Tabelle (ggf auch in ein speziell dafür eingerichtetes Blatt).
Dort kannst du dann die Daten mit den normalen Excelfunktionen bearbeiten, dh
- sortieren
- bei Bedarf Duplikate löschen
- Leerzeilen entfernen
dann kannst du die so aufbereiteten Daten direkt in die Comboboxliste einlesen.
eine andere Methode eine sortierte Liste zu erhalten ist folgende:
- durchlaufe die bereits vorhandenen Einträge in einer Schleife vom ersten bis zum letzten Element
- stoppe die Schleife wenn ein Listboxelement grösser ist als der einzufügende Wert
- füge den Wert .Additem an der entsprechenden Stelle ein. Wenn man bei .AddItem eine Indexnummer mit angibt, wird der Wert an dieser Stelle eingefügt und nicht am Ende.
Gruß Daniel

Anzeige
AW: Sortierung eines Arrays?
01.02.2016 15:51:39
Kasimir
Hallo Daniel!
Danke Dir für Deine Antwort. Ich würde aber gerne das Array sortieren, da ich dies in der Zukunft wahrscheinlich noch öfter gebrauchen werde und Deine Vorschläge da nicht so geeignet sind. Ich habe auch hier in der Suche nachgesehen (https://www.herber.de/forum/archiv/456to460/459950_Array_sortieren.html), komme aber mit den VBA-Codes nicht so richtig klar. Daher meine Frage des Sortierens im Array.
Auch wenn Deine Lösung für mich nicht so richtig in Frage kommt, danke Dir nochmal für den Hilfeversuch.
Gruß,
Kasimir

AW: Sortierung eines Arrays?
01.02.2016 16:40:38
Daniel
Hi
wenn du Arrays direkt sortieren willst und das auch bei grössern Datenmengen sehr schnell, wirst du um einen Quicksort nicht herumkommen.
hier nochmal ein Codebeispiel, mit welchem du auch mehrspaltige Arrays mit mehrern Kriterien sortieren kannst:
http://www.online-excel.de/excel/singsel_vba.php?f=97
aber auch das ist ein höheres Niveau als "VBA nur mit dem Recorder"
auf deinem Level ist der einfachsste Weg ein- und zweidimensionale Arrays zu sortieren, diese in eine Exceltabelle zu schreiben, dort mit der Excel-Sortierfunktion zu sortieren und dann wieder ins Array zu schreiben.
Gruß Daniel
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige