Clever-Excel-Forum

Normale Version: Mehrere Zellen in einer Zeile nach benutzerdefinierter Liste sortieren
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo,
ich möchte mehrere Zellen mit Text in einer Zeile nach einer Vorgabe sortieren, die in einer Liste steht. Da ich die Sortierung für mehr als 4000 Zeilen machen muss, möchte ich gerne eine Funktion nutzen und nicht über das Dialogfeld "Sortieren" arbeiten. Die Sortierreihenfolge ist wie im Beispiel nicht alphabetisch.

[attachment=21775]

Vielen Dank!
Moin

Arbeitsblatt mit dem Namen 'Tabelle2'
ABCDEFGHIJ
1Anzahlerstezweitedrittevierteerste sortiertzweite sortiertdritte sortiertvierte sortiert
21grüngelb00grüngelb00
32blaublaugelbgrüngrüngelbblaublau
41gelb000gelb000
54rotblaugelb0gelbblaurot0
63gelbrot00gelbrot00
71grün000grün000
8
9
10grün
11gelb
12blau
13rot
140

ZelleFormel
G2=INDEX($A$10:$A$14;AGGREGAT(15;6;VERGLEICH($B2:$E2;$A$10:$A$14;0);SPALTEN($G2:G2)))
Verwendete Systemkomponenten: [Windows (32-bit) NT 6.01] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.0) erstellt. ©Gerd alias Bamberg
Hallo,

so:
Code:
=WENNFEHLER(INDEX($A$10:$A$14;AGGREGAT(15;6;VERGLEICH($B2:$E2;$A$10:$A$14;0);SPALTE(A1)));"")
Oh, da habe ich vergessen zu aktualisieren. Detlef war schneller. Lasse es aber stehen, da ich den Wennfehler noch drumherum machen würde.
Hallo Asdler,

versuche es mal mit diesem Makro:

Code:
Sub sort()
   Dim lngZeile As Long
   Dim strBer As String
   Application.ScreenUpdating = False
   For lngZeile = 2 To 4000
       strBer = "B" & lngZeile & ":" & "I" & lngZeile
       Tabelle1.sort.SortFields.Clear
       Tabelle1.sort.SortFields.Add Key:=Range(strBer), SortOn:=xlSortOnValues, _
           Order:=xlAscending, CustomOrder:="gr?n, gelb, blau, rot, 0", DataOption:=xlSortNormal
       With ActiveWorkbook.Worksheets("Tabelle1").sort
           .SetRange Range(strBer)
           .Header = xlGuess
           .MatchCase = False
           .Orientation = xlLeftToRight
           .SortMethod = xlPinYin
           .Apply
       End With
   Next lngZeile
   Application.ScreenUpdating = True
End Sub


Hinter CustomOrder müsstest du deine tatsächlichen Sortierbegriffe eintragen.