Mehrere Zellen in einer Zeile nach benutzerdefinierter Liste sortieren
#1
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.


.xlsx   Beispiel2.xlsx (Größe: 9,15 KB / Downloads: 10)

Vielen Dank!
Top
#2
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
Wir sehen uns!
... Detlef

Meine Beiträge können Ironie oder Sarkasmus enthalten.

[-] Folgende(r) 1 Nutzer sagt Danke an shift-del für diesen Beitrag:
  • asdler
Top
#3
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.
Gruß
Michael
[-] Folgende(r) 1 Nutzer sagt Danke an Der Steuerfuzzi für diesen Beitrag:
  • asdler
Top
#4
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. 
Viele Grüße
Klaus-Dieter
Der Erfolg hat viele Väter, 
der Misserfolg ist ein Waisenkind
Richard Cobden
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste