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.

   

Excel-Inside auf FacebookExcel-Live News blogExcel-Inside RSS-FeedMail an Excel-InsideTwitter Account für Excel-InsideMail an Excel-Inside

Office Programmierung

Excel Auftragsprogrammierung

Access Auftragsprogrammierung

Word Auftragsprogrammierung

Outlook Auftragsprogrammierung

 

 

 

 




   
Office Schulungen VBA, Excel, Access
E-Book Formeln und Funktionen Excel 2013
Excel-Inside Newsletter abonnieren
   

Backlink  

ERROR: PAGE_URL belons not to given domain: 573001800