Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1380to1384
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 und neu gruppieren

Sortieren und neu gruppieren
25.09.2014 13:09:55
Ingo
Hallo ihr Lieben,
ein neuer Tag, eine neue Herausforderung, eine neue Chance ein Held zu werden.
Heute schreibe ich entnervt über Listensortieren.
Ich habe da eine Liste mit Codes. Die Codes stehen in einer Range von A1 bis I13.(kann aber auch länger sein, zB. A1 bis I20).
Also 117. Ich habe, mit der Hilfe der Beispiele, jetzt ein Macro zusammengebastelt, das mir alle Codes alphabetisch sortiert in Spalte U ausgibt. Soweit so gut.
Jetzt soll aus dieser 1-spaltigen Liste aber wieder eine Matrix werden. Die Anzahl der Zeilen wird in in W1 vorgegeben, die Anzahl der Spalten in W2.
Die Matrix kann gerne irgendwo rechts auftauchen, zB. Y1.
Geht das über ein Makro?
https://www.herber.de/bbs/user/92809.xlsm
Ich freue mich auf eure Antworten.
Im Voraus vielen Dank
Ingo

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortieren und neu gruppieren
25.09.2014 13:22:25
Rudi
Hallo,
sicher geht das.
Wie soll die Reihenfolge sein?
U1->Y1, U2->Y2, U3->Y3.... oder U1->Y1, U2->Z1, U3->AA1...
Gruß
Rudi

AW: Sortieren und neu gruppieren
25.09.2014 13:33:42
Ingo
Hallo Rudi,
danke für die schnelle Antwort.
Ich denke U1->Y1, U2->Y2, U3->Y3 ist korrekt.
Die Codes stehen ja jetzt in alphab order von Oben nach unten.
Gemäß der Angabe in W2=13 sollen daraus jetzt 9 Spalten werden.
Gemäß der Angabe in W1=12 sollen daraus jetzt 13 Zeilen werden.
Die Sortierung soll so wie in der Liste sein. D.h. Die ersten 13 Zellen aus der sortierten Liste sollen in Y1 bis y13 stehen. Die nächsten 13 in den Zellen z1 bis z13.
Die Sortierung/Reihenfolge soll dabei erhalten bleiben.
Naja, es kann auh vorkommen, das die Anzahl der Spalten und Zeilen verändert wird.
Kriegst du das hin?
Viele Grüße
Ingo

Anzeige
AW: Sortieren und neu gruppieren
25.09.2014 15:15:51
Rudi
Hallo,
Sub aaaa()
Dim arrIn, arrTmp(), arrOut()
Dim i As Long, j As Long, n As Long, k As Long
Dim lZeilen As Long, lSpalten As Long
lZeilen = Range("W1")
arrIn = Cells(1, 1).CurrentRegion
ReDim arrTmp(1 To UBound(arrIn) * UBound(arrIn, 2))
lZeilen = Range("W1")
lSpalten = WorksheetFunction.RoundUp(UBound(arrTmp) / lZeilen, 0)
For i = 1 To UBound(arrIn)
For j = 1 To UBound(arrIn, 2)
n = n + 1
arrTmp(n) = arrIn(i, j)
Next
Next
n = 0
j = 0
QuickSort arrTmp
ReDim arrOut(1 To lZeilen, 1 To lSpalten)
For i = 1 To UBound(arrTmp) Step lZeilen
j = j + 1
k = 0
For n = i To i + 12
k = k + 1
arrOut(k, j) = arrTmp(n)
Next
Next
Range("Y1").Resize(lZeilen, lSpalten) = arrOut
End Sub

Sub QuickSort(ByRef DasarrIny, 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(DasarrIny)
End If
If IsMissing(LetzteZeile) Then
LetzteZeile = UBound(DasarrIny)
End If
UnterGrenze = ErsteZeile
OberGrenze = LetzteZeile
AktuellerWert = DasarrIny((ErsteZeile + LetzteZeile) / 2)
Do While (UnterGrenze  AktuellerWert And OberGrenze > ErsteZeile)
OberGrenze = OberGrenze - 1
Loop
If (UnterGrenze  ErsteZeile) Then Call QuickSort(DasarrIny, ErsteZeile, OberGrenze)
If (UnterGrenze 

Gruß
Rudi

Anzeige
AW: Sortieren und neu gruppieren
25.09.2014 15:22:00
Ingo
Also das ist ja wieder mal genial.
Ich hätte das so nie hingekriegt.
Vielen, vielen Dank.
Wieder viel gelernt.
Mit freundlichen Grüßen
Ingo

AW: Sortieren und neu gruppieren
25.09.2014 15:37:55
Ingo
Hallo Rudi,
habe es gerade mal getestet, mit veränderten Eingaben.
DA gibt es noch Herausforderungen.
Wenn ich Codes hinzufüge und die Makro starte, bekomme ich eine Fehlermeldung.Runtime Error 9. Subscript out of range.
Das Problem scheint in der Zeile:
arrOut (k;j) = arrTmp (n) zu liegen
k=12
j=1
n=12
Eventuell liegt das aber auch an meinem Makro "MultiSort".
Kannst du da etwas dran machen?
https://www.herber.de/bbs/user/92817.xlsm
Beste Grüße
Ingo

Anzeige
AW: Sortieren und neu gruppieren
25.09.2014 17:05:46
Rudi
Hallo,
Eventuell liegt das aber auch an meinem Makro "MultiSort".
brauchst du eigentlich nicht mehr.
Sub aaaa()
Dim arrIn, arrTmp(), arrOut()
Dim i As Long, j As Long, n As Long, k As Long
Dim lZeilen As Long, lSpalten As Long
lZeilen = Range("W1")
arrIn = Cells(1, 1).CurrentRegion
ReDim arrTmp(1 To UBound(arrIn) * UBound(arrIn, 2))
lZeilen = Range("W1")
lSpalten = WorksheetFunction.RoundUp(UBound(arrTmp) / lZeilen, 0)
For i = 1 To UBound(arrIn)
For j = 1 To UBound(arrIn, 2)
n = n + 1
arrTmp(n) = arrIn(i, j)
Next
Next
n = 0
j = 0
QuickSort arrTmp
ReDim arrOut(1 To lZeilen, 1 To lSpalten)
For i = 1 To UBound(arrTmp) Step lZeilen
j = j + 1
k = 0
For n = i To WorksheetFunction.Min(i + lZeilen - 1, UBound(arrTmp))
k = k + 1
arrOut(k, j) = arrTmp(n)
Next
Next
Range("Y1").Resize(lZeilen, lSpalten) = arrOut
End Sub
Gruß
Rudi

Anzeige
AW: Sortieren und neu gruppieren
26.09.2014 08:49:48
Ingo
Guten Morgen Rudi,
jetzt klappt alles super. Einfach perfekt.
Ich finde euch/dich einfach nur klasse.
Vielen vielen Beste Grüßen
Ingo

34 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige