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

Sortieren eindimensionales Array

Sortieren eindimensionales Array
21.10.2021 21:52:58
SteffenS
Hallo Zusammen,
ich habe im Netz folgenden Code gefunden um ein eindimensionales Array zu sortieren.
Dieser funktioniert auch ganz gut und ohne Fehler, allerdings fehlt immer der letzte Eintrag im Array.
Was muss ich tun, damit alle Einträge vorhanden sind. Zusätzlich würde ich gern eine Option haben um auf- oder absteigend zu sortieren.
Es wäre Klasse, wenn ihr mir dabei helfen könntet.
'-------------------------------------------------------------------------------------------------------------------
'Sortierung eindimensionales Array - 21.10.2021 StS
'-------------------------------------------------------------------------------------------------------------------

Function SortArray(ByRef SortstrArray As Variant) As Variant()
Dim z As Long, i As Long
Dim strWert As Variant
For z = UBound(SortstrArray) - 1 To LBound(SortstrArray) Step -1
For i = LBound(SortstrArray) To z
If SortstrArray(i)  "" Then
If LCase(SortstrArray(i)) > LCase(SortstrArray(i + 1)) Then
strWert = SortstrArray(i)
SortstrArray(i) = SortstrArray(i + 1)
SortstrArray(i + 1) = strWert
End If
End If
Next i
Next z
'Werte einsetzen
SortArray = SortstrArray
End Function
Danke Euch schon mal
VG
Steffen

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren eindimensionales Array
21.10.2021 22:15:37
Günther
… auch wenn es aus der Mode gekommen ist: Es zeugt nicht nur von gutem Stil sondern auch von Anstand, wenn eine Quelle (und nicht nur der relevante Inhalt) aufgezeigt wird. Der Ersteller des Codes hat es imho einfach verdient!
 
Gruß
Günther  |  mein Excel-Blog
BubbleSort ist Asbach
22.10.2021 08:37:02
RPP63
Moin!
Aus Deinem Link:

Leider gibt es keine vorgefertigte Funktion zum Sortieren von Array, zumindest nichts, was auch nur annähernd vernünftig funktioniert.
Daher muss man sich selbst mit eigenen Funktionen helfen.
Das stimmt so schlicht und ergreifend nicht mehr!
Steppe mal mit F8 durch mein Makro und schaue Dir crr im Lokalfenster an:

Sub Sort365()
Dim arr, brr, crr
arr = Split("f a t x k w")
brr = WorksheetFunction.Sort(Application.Transpose(arr))
crr = Application.Transpose(brr)
End Sub
Dass könnte man auch direkt als Einzeiler machen.
Gruß Ralf
Anzeige
AW: Sortieren eindimensionales Array
22.10.2021 08:44:20
Zwenn
Hallo Steffen,
ich habe Dein Problem nicht analysiert. Aber ich finde es faszinierend, dass auf der verlinkten Seite ein langsamerer Sortieralgorithmus als der BubbleSort angegeben ist. (Habe nicht geprüft, ob das stimmt.) Der BubbleSort ist nämlich bereits ein sehr langsamer Sortieralgorithmus, dafür aber einfach zu implementieren. Für Deine Zwecke wird er vermutlich auch völlig ausreichen, außer Du hast sehr lange Listen.
Da Du Deinen VBA Lvl mit "gut" angegeben hast, empfehle ich die folgende Videoreihe für eine Übersicht zu Sortieralgorithmen. Schau Dir die ersten 3 Videos an. Bei Interesse natürlich auch mehr. Aber in den ersten 3 bekommst Du ganz gute Erklärungen zu Grundlagen von Sortieralgorithmen und im speziellen dann zum BubbleSort. Damit solltest Du Dein Problem selbst lösen können.
https://studyflix.de/informatik/sortieralgorithmen-1337
Viele Grüße,
Zwenn
Anzeige
AW: Sortieren eindimensionales Array
22.10.2021 09:37:17
Der

Da Du Deinen VBA Lvl mit "gut" angegeben hast, 
Wenn das Level gut wäre, dann könnte er sein Problem vermutlich selbst lösen.
Da das Array ByRef übergeben wird, kann es nicht sein, dass Elemente fehlen.
Hier wird übrigens nach Text sortiert (was bei Zahlen möglicherweis zu unerwünschten Ergebnissen in der Reihenfolge führen könnte).
Grüße
Michael
AW: Sortieren eindimensionales Array
22.10.2021 09:28:57
UweD
Hallo Steffen
Für 365 gibt es doch mittlerweile die Sortieren Funktion standardmäßig
Daten stehen in A1: A25
Formel in B1
normal aufsteigend

=SORTIEREN(A1:A25)
absteigend

=SORTIEREN(A1:A25;;-1)
Die Formel erweitert sich automatisch auf die weiten Zellen
LG UweD
Anzeige
SORTIEREN()
22.10.2021 11:10:49
RPP63
Moin Uwe!
Hier geht es aber um das Sortieren eines eindimensionalen Arrays.
=SORTIEREN() funktioniert prinzipiell jedoch nur mit einem Range.
Ein Range ist per Definition zweidimensional!
(Auch eine einzelne Spalte/Zeile ist zweidimensional)
Wie das dennoch funktioniert, habe ich heute früh gezeigt:
Man muss das eindimensionale Array transponieren, wodurch es zu einem zweidimensionalen wird.
Gruß Ralf
AW: SORTIEREN()
22.10.2021 15:35:31
UweD
Hallo Ralf
Ja, du hast Recht.
sein im ersten Post dargestelltes Makro funktioniert ja auch nur, wenn es aus einem Unterprogramm aufgerufen wird und ein Array übergeben wird.
Ich war davon ausgegangen, dass Es als Tabellenblattfunktion genutzt wird.
Mal abwarten, was er schreibt. So eilig war das Problem ja scheinbar nicht.
LG UweD
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige