Begriffe innerhalb einer Zelle sortieren

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.

Partnerlinks

Relevante Artikel

Wir benutzen Cookies
Ihre Zufriedenheit ist unser Ziel, deshalb verwenden wir Cookies. Mit diesen ermöglichen wir, dass unsere Webseite zuverlässig und sicher läuft, wir die Performance im Blick behalten und Sie besser ansprechen können. Cookies werden benötigt, damit technisch alles funktioniert und Sie auch externe Inhalte lesen können. Des Weiteren sammeln wir unter anderem Daten über aufgerufene Seiten, getätigte Käufe oder geklickte Buttons, um so unser Angebot an Sie zu Verbessern. Mehr über unsere verwendeten Dienste erfahren Sie unter „Weitere Informationen“. Mit Klick auf „Akzeptieren“ erklären Sie sich mit der Verwendung dieser Dienste einverstanden. Ihre Einwilligung können Sie jederzeit mit Wirkung auf die Zukunft widerrufen oder ändern.