Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1228to1232
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

Array mit Texten befüllen und dann sortieren?

Array mit Texten befüllen und dann sortieren?
Kasimir
Hallo an Alle!
Ich benötige Eure Hilfe, da ich mich mit Arrays (noch) nicht auskenne. Erst mal ein Beispiel, wie die Daten in einer Tabelle stehen:
Bestand

 A
1Artikel
2Büchsenmilch
3Filtertüten
4Kaffee
5Aufbackbaguettbrötchen
6Aufbackbaguettes
7Aufbackbrötchen dunkel
8Aufbackbrötchen hell
9Croissants
10Graubrot
11Knäckebrot
12Scorpers
13Sonnenblumenbrot
14Toastbrot
15Tosties
16Sekt
17Weiswein trocken
18Gummibärchen
19Kekse
20Schokolade
21Bratensoße groß
22Essig
23Essigessenz
24Glas Hühnerbrühe
25Glas Rinderbrühe
26Jägersoße groß
27MaggiFix Bolognese
28MaggiFix ChilieConcane
29MaggiFix Gulasch
30Rahmsoße
31Sonnenblumenöl Mzola


Excel Tabellen im Web darstellen >> Excel Jeanie HTML 4
Ich möchte nun die Daten aus Spalte A in ein Array schreiben und die Daten in diesem Array sortieren. Ich habe dazu auch ein schönes Beispiel von @Nepumuk hier im Archiv gefunden, was auch funktioniert, nur noch nicht für meine Bedürfnisse.
Modul Modul4 Option Explicit Option Base 0 'Deklaration eines Variant der das zusortierende Array aufnimmt. 'Das Array beinhaltet hier 16 Element (0 bis 15), wobei das erste 'als Hilfselement eingesetzt wird. Dim SortArr As Variant 'Diese Prozedur initialisiert das Array mit den unsortierten Werten. 'Das Hilfselement SortArr(0) wird mit 0 initialisiert. Sub Init_Arr(ByRef SortArr) SortArr = Array(0, 10, 3, 14, 5, 2, 13, 11, 9, 12, 1, 7, 15, 8, 4, 6) End Sub 'Die Sortier-Prozedur Insert_Sort setzt den Sortieralgortihmus um. Sub Insert_Sort(ByRef SortArr) Dim i As Integer, j As Integer, Element As Integer 'Durchlaufen der Array-Elemente mittels Schleife. For i = 2 To Ubound(SortArr) Element = SortArr(i) 'Hilfselement wird als Zwischenspeicher eingesetzt. SortArr(0) = Element j = i - 1 'Verschieben der Array-Elemente bis 'kleineres Array-Element gefunden. Do While Element < SortArr(j) SortArr(j + 1) = SortArr(j) j = j - 1 Loop 'Array-Element einfügen. SortArr(j + 1) = Element Next i End Sub 'Über diese Prozedur kann das Array zur Überprüfung ausgegeben werden. Sub ArrAusgabe(Text As String, ByRef SortArr) Dim i As Integer Dim SortArrStr As String SortArrStr = Text & SortArr(1) For i = 2 To 15 SortArrStr = SortArrStr & ", " & SortArr(i) Next i MsgBox SortArrStr End Sub 'Die Hauptprozedur führt die vorab aufgeführten Prozeduren aus. Sub Insert_Sort_Test() Call Init_Arr(SortArr) Call ArrAusgabe("Unsortiert: ", SortArr) Call Insert_Sort(SortArr) Call ArrAusgabe("Sortiert: ", SortArr) End Sub
[size=8]Code eingefügt mit [url=http://vbahtml.origo.ethz.ch] VBA in HTML 2.0.0.3[/url][/size]
Hier werden aber statische Daten in das Array eingelesen. Wie stelle ich es nun für dieses Beispiel an meine Daten aus Spalte A in das Array einzulesen und diese eingelesenen Daten dann in diesem Array sortieren zu lassen?
Ich würde mich über Hilfe wahnsinnig freuen.
Danke schon mal vorab,
Kasimir

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Array mit Texten befüllen und dann sortieren?
16.09.2011 09:33:42
Rudi
Hallo,
andere Methode:
Option Explicit

Sub Kasimir()
Dim DasArray
DasArray = Range(Cells(2, 1), Cells(Rows.Count, 1).End(xlUp))
DasArray = WorksheetFunction.Transpose(DasArray)
QuickSort DasArray
End Sub


Sub QuickSort(ByRef DasArray, Optional ErsteZeile, Optional LetzteZeile)
On Error Resume Next
Dim UnterGrenze As Long, OberGrenze As Long
Dim AktuellerWert, GemerkterWert As Variant
If IsMissing(ErsteZeile) Then
ErsteZeile = LBound(DasArray, 1)
End If
If IsMissing(LetzteZeile) Then
LetzteZeile = UBound(DasArray, 1)
End If
UnterGrenze = ErsteZeile
OberGrenze = LetzteZeile
AktuellerWert = DasArray((ErsteZeile + LetzteZeile) / 2)
Do While (UnterGrenze  AktuellerWert And OberGrenze > ErsteZeile)
OberGrenze = OberGrenze - 1
Loop
If (UnterGrenze  ErsteZeile) Then Call QuickSort(DasArray, ErsteZeile, OberGrenze)
If (UnterGrenze 

Gruß
Rudi
Anzeige
AW: Array mit Texten befüllen und dann sortieren?
16.09.2011 11:14:59
Kasimir
Hallo Rudi,
danke Dir für Deinen VBA-Code, der tadellos funktioniert. Mit ein paar Änderungen an meine Bedürfnisse angepasst, funktioniert er so wie ich es mir vorstelle, auch wenn ich den VBA-Code nur zum kleinen Teil (nur den "Sub Kasimir()" -Teil) verstanden habe.
Gruß,
Kasimir

112 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige