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.

   

Artikel mit ähnlichen Themen

   

Aktuell sind 29 Gäste und keine Mitglieder online

   
Twitter Account für Excel-InsideExcel-Inside auf FacebookExcel-Inside auf Linked InExcel-Live News blogExcel-Inside RSS-FeedExcel-Inside auf Xing

Excel Auftragsprogrammierung

Access Auftragsprogrammierung
Word Auftragsprogrammierung

Outlook Auftragsprogrammierung

 Maßgeschneiderte
Individuallösungen
  für Ihren Erfolg
   

Sie haben eine Frage ...
... hier geht´s zum Office Forum

Forum Office-Fragen

   
   
   

Forum Office-FragenOffice-Fragen.de ist das Forum rund um Microsoft Office, PALO und LibreOffice.
[Excel, Word, Outlook, Access, Visio, Office365, Office mac: u.v.m.]

Wenn Sie Fragen haben, dann können Sie diese jederzeit gerne im Forum stellen. Die anwesenden Moderatoren und ggf.
auch andere Forumsteilnehmer werden Ihre Problemstellung schnellstmöglich bearbeiten.

Möchten Sie Ihr Wissen weitergeben? Dann sind Sie selbstverständlich auch jederzeit herzlich im Forum willkommen.

Jeder registrierte Benutzer erhält das kostenlose E-Book "Die 100 wichtigsten Formeln und Funktionen" für Excel.

Registrieren Sie sich noch heute und sichern Sie sich das kostenlose Willkommensgeschenk.

» zum Forum...

   
Live tracking and statistics