Wie kann ich bei Microsoft Word einen fortlaufenden Text alphabetisch sortieren?

2 Antworten

Hallo,

solange es immer einzelne, durch Leerzeichen getrennte Wörter sind, die hier sortiert werden sollen, ist das in Word eigentlich sehr schnell zu erledigen.

Dazu muss man in einem ersten Schritt alle Leerzeichen in Absätze umwandeln, dann sortieren und dann alle Absätze wieder in Leerzeichen umwandeln. Das geht so:

  1. Rufe die Suchen-und-Ersetzen-Funktion auf. Drücke hierfür Strg + H.
  2. Gib ins Feld Suchen nach ein Leerzeichen ein und ins Feld Ersetzen durch den Befehl ^p. Drücke jetzt auf Alle Ersetzen. Jetzt solltest du alle Wörter einzeln untereinander in Absätzen stehen haben.
  3. Sortiere jetzt die Absätze (Typ: Text) aufsteigend. Das bringt die Absätze bzw. Wörter in eine alphabetische Reihenfolge.
  4. Ersetze jetzt die Absätze wieder durch Leerzeichen: Rufe die Suchen-und-Ersetzen-Funktion auf, gib ins Feld Suchen nach den Befehl ^p ein und ins Feld Ersetzen durch ein Leerzeichen ein und drücke auf Alle Ersetzen.

Im Ergebnis sollten jetzt deine Wörter als Fließtext alphabetisch sortiert sein.

VBA-Makro für Word

Hier das Ganze als Makro in VBA. Den Code unten könnte man in Word ein normales Modul im VBA-Editor kopieren (Alt + F11 drücken, dann Einfügen Modul, dann den Code unten in den großen weißen Bereich in der Mitte kopieren und Speichern, dann den VBA-Editor wieder verlassen) und dann das Makro WoerterInFliesstextAlphabetischSortieren einmal ausführen (Alt + F8 drücken, dann das Makro WoerterInFliesstextAlphabetischSortieren auswählen und rechts auf Ausführen drücken), um das gleiche Ergebnis herbeizuführen.

Sub WoerterInFliesstextAlphabetischSortieren()

    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = " "
        .Replacement.Text = "^p"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
    
    With Selection
    .WholeStory
    .Sort ExcludeHeader:=False, FieldNumber:="Absätze", SortFieldType _
        :=wdSortFieldAlphanumeric, SortOrder:=wdSortOrderAscending, FieldNumber2 _
        :="", SortFieldType2:=wdSortFieldAlphanumeric, SortOrder2:= _
        wdSortOrderAscending, FieldNumber3:="", SortFieldType3:= _
        wdSortFieldAlphanumeric, SortOrder3:=wdSortOrderAscending, Separator:= _
        wdSortSeparateByTabs, SortColumn:=False, CaseSensitive:=False, LanguageID _
        :=wdGerman, SubFieldNumber:="Absätze", SubFieldNumber2:="Absätze", _
        SubFieldNumber3:="Absätze"
    End With
        
    With Selection.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Text = "^p"
        .Replacement.Text = " "
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
    
End Sub

Gruß, BerchGerch

Woher ich das weiß:eigene Erfahrung – Ich arbeite seit 30 Jahren nahezu täglich mit Word.

Nimm eine KI deiner Wahl und hau den Text da rein.

Mit Word geht das jedenfalls nicht so einfach. Nur mit Skripten, die den Text in Absätze umwandelt, sortiert und dann die Absätze wieder entfernt.