
Mit Hilfe der benuterdefinierten Funktion (UDF) =SORTLIST(Zelle; Separator) können Einträge, welche sich innerhalb einer Zelle befinden alphabetisch sortiert werden.
Die Funktion zerlegt den Textinhalt der Zelle in Elemente, die durch ein bestimmtes Trennzeichen separiert sind. Das Trennzeichen wird innerhalb der Funktion verwendet und die sortierten Textelemente werden wieder unter Verwendung desselben Trennzeichens zusammengefügt und als Zeichenfolge zurückgegeben. Die Funktion ist geeignet, um Aufzählungen in einer Textzelle, die z. B. durch Komma oder Semikolon getrennt sind, alphabetisch zu sortieren. Auch Auflistungen mit Zeilenumbruch lassen sich so sortieren.
Die Lösung stammt von wilfert.de und wird mit ausdrücklicher Genehmigung auf Excel-Inside.de veröffentlicht.
Der VBA-Code für die benutzerdefiniert Funktion iist wie folgt aufgebaut und muss in ein Code-Modul eingefügt werden.
Function SortList(ByVal MyText As String, ByVal MySeparator As String) As String
'Gibt eine alphabetisch sortierte Liste von durch ein Trennzeichen separierten Elementen einer Zeichenfolge zurück
Dim strBuffer As String
Dim intCounter As Integer
Dim arrList() As String
Dim intPos As Integer
Dim i As Integer
Dim j As Integer
Dim strBuf As String
'Einzelne Elemente der Zeichenfolge in Array schreiben
strBuffer = Trim(MyText)
Do
intPos = InStr(strBuffer, MySeparator)
intCounter = intCounter + 1
ReDim Preserve arrList(intCounter)
If intPos = 0 Then
arrList(intCounter) = Trim(strBuffer)
strBuffer = ""
Else
arrList(intCounter) = Left(strBuffer, intPos - 1)
strBuffer = Trim(Right(strBuffer, Len(strBuffer) - intPos))
End If
Loop While Len(strBuffer) > 0
'Array sortieren
For i = 1 To intCounter - 1
For j = i + 1 To intCounter
If arrList(j) < arrList(i) Then
strBuf = arrList(j)
arrList(j) = arrList(i)
arrList(i) = strBuf
End If
Next j
Next i
'Zeichenfolgen zurückschreiben
For intPos = 1 To intCounter
strBuffer = strBuffer & arrList(intPos)
If intPos < intCounter Then strBuffer = strBuffer & MySeparator
Next intPos
SortList = strBuffer
End Function
In der beigefügten Beispieldatei können Sie die neue Funktion SORTLIST() in Aktion betrachten.