Ich möchte alle Worte von einem großen Text untereinander haben. Wie mache ich das?
Ich habe einen sehr umfangreichen Text. Ich möchte jedes einzelne Wort untereinander haben.
z.B. Text: "Morgen steige ich auf die Zugspitze"
Umgewandelt:
Morgen
steige
ich
auf
die
Zugspitze
Wie erreiche ich diese Textumwandlung? Ich habe es mit Microsoft Office 2010 und 2016 und Libre Office versucht.
Auch Google und Youtube konnten mir nicht helfen.
Wie kann ich mehrfach vorkommende Wörter löschen, sodass jedes Wort nur einmal angezeigt wird?
5 Antworten
Hallo,
du kannst das folgende Makro verwenden, das du in ein neues, normales Modul einfügen musst (in Word Alt + F11 drücken, um den VBA-Editor zu öffnen, dann dort über Einfügen → Modul ein neues Modul erzeugen, und dann hier das Makro reinkopieren).
Hier der Code:
Option Compare Text
Sub TextUeberpruefen()
Dim strWort, strNaechstesWort As String
ActiveDocument.Range.Select
'Alle Satz- oder Sonderzeichen aus Text entfernen
With Selection.Find
.ClearFormatting
.Replacement.ClearFormatting
.Text = "[,.-;:„“\!""§$%&/(\)=?{[\]}\\]"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchWildcards = True
.MatchSoundsLike = False
.MatchAllWordForms = False
.Execute Replace:=wdReplaceAll
End With
'Wörter untereinander schreiben
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
'Sortieren
Selection.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:=True, LanguageID _
:=wdGerman, SubFieldNumber:="Absätze", SubFieldNumber2:="Absätze", _
SubFieldNumber3:="Absätze"
'Mehrfach vorkommende Wörter löschen
With Selection
.EndKey Unit:=wdStory
.TypeParagraph
.HomeKey Unit:=wdStory, Extend:=wdExtend
ActiveDocument.Bookmarks.Add Name:="BMBereich", Range:=.Range
.Collapse
VonVorne:
.EndKey Unit:=wdLine, Extend:=wdExtend
strWort = .Range.Text
strWort = Left(strWort, Len(strWort) - 1)
.Collapse
.MoveDown Unit:=wdLine
.EndKey Unit:=wdLine, Extend:=wdExtend
strNaechstesWort = .Range.Text
strNaechstesWort = Left(strNaechstesWort, Len(strNaechstesWort) - 1)
If strWort = strNaechstesWort Then
.Delete
.MoveUp Unit:=wdLine
Else
If .InRange(ActiveDocument.Bookmarks("BMBereich").Range) Then
strWort = .Range.Text
Else
.Delete
ActiveDocument.Bookmarks("BMBereich").Delete
Exit Sub
End If
End If
GoTo VonVorne
End With
End Sub
Das Makro entfernt zunächst alle Satz- und Sonderzeichen aus deinem Text. Danach werden alle Wörter untereinander geschrieben und anschließend sortiert. Schließlich werden alle mehrfach vorkommenden Wörter entfernt, wobei Groß- und Kleinschreibung hierbei nicht beachtet wird.
Wichtig: Je nach Umfang und Größe deines Dokuments, kann es sein, dass das Makro sehr lange braucht, weil es jede Zeile bzw. jedes Wort einzeln mit dem jeweils nächsten abgleichen muss, um gleiche Wörter zu löschen. Möglicherweise hängt sich Word dabei auch auf. Jedenfalls erfolgt die Verwendung des Makros vollkommen auf eigenes Risiko! Ich übernehme keinerlei Haftung für Schäden jedweder Art, die möglicherweise aus der Verwendung des Makros entstehen.
Eine Rückmeldung wäre nett und melde dich bitte bei Fragen!
Gruß, BerchGerch
Ersetze die Leerzeichen durch Zeilenumbrüche. Dazu könntest du die „Suchen & Ersetzen“-Funktion verwenden.
Zeilenumbrüche (bzw. eigentlich genauer: neue Absätze) erhält man bei Suchen und Ersetzen mit „^p“. Beim Suchfeld also „ “ (ein Leerzeichen) eintragen und beim Ersetzen-Feld „^p“ eintragen. (ohne Anführungszeichen)
Bzgl. der Löschung doppelt vorkommender Wörter fällt mir spontan keine optimale Möglichkeit ein. Persönlich würde ich evtl. die Zeilen einfach sortieren lassen und dann manuell schauen, welche Wörter doppelt vorkommen und diese Löschen. Bei einer größeren Datenmenge wäre das aber anstrengend und dauert evtl. auch länger. Bzw. würd ich selbst dafür wohl gar nicht Word verwenden, sondern mir dafür ein kleines Python-Script basteln und den Text da reinschmeißen. Vermutlich kann man das mit VBA zufriedenstellend in Word lösen, aber damit kenne ich mich nicht aus.
Das einfachste wäre wohl, wenn du den rechten Seitenrand soweit nach links ziehst, dass dann jedesmal eine neue Zeile beginnt.
Automatische Silbentrennung dann ausschalten.
Für alles andere dann per VBA.
Dann machst du da etwas falsch, wenn die Ansicht verkleinert wird.
Aber auch Das Rand- oder Einzugsbereichverschieben wird nicht komplett funktionieren.
Wenns ein längerer Text sein soll, wirds wohl nur mit VBA machbar sein.
Ansnsten einfach Handarbeit.
Schalte zunächst die Anzeige der Steuerzeichen ein, damit Du Leerzeichen von weichen und harten Zeilenumbrüchen unterscheiden kannst. Und dann nutze die "Suchen-Ersetzen-Funktion", um Leerzeichen gegen feste Zeilenumbrüche auszutauschen. Schon hast Du alle Wörter untereinander.
Kopiere den ganzen Text nun in die Tabellenfunktion. Danach müßte https://praxistipps.chip.de/openoffice-calc-doppelte-eintraege-finden-und-entfernen_28350 helfen.
Es gibt eine ganz einfache Möglichkeit: du ersetzt alle Leerzeichen zwischen den Wörtern durch Absatz Endezeichen und dann hast du alle Wörter untereinander.
Zumindest wenn man den Schritt mit Satzzeichen wiederholt. Dürfte tatsächlich einer der schnellsten Wege werden.
Genau, das hatte ich vergessen, nachher alle Satzzeichen auf die gleiche Art und Weise entfernen lassen
Danke für die schnelle Antwort. Ich habe es mit Office 2010 getestet. allerdings akzeptiert er nicht die Umschaltung auf eine neue Zeile. Der Text wird dann zusammen geschrieben, als sei das ein Wort. Was meinst du genau mit "Absatz Endzeichen"? Umschalttaste? Entertaste?
Du musst das Zeichen finden für den manuellen Zeilenumbruch, Ebenso das Zeichen für das Absatz Ende. Das ist leider in den neuen Office Versionen nicht mehr so einfach wie früher. Einfach mal im Handbuch nachschauen. Wenn man die Stelle hat, wo man die Zeichen findet, die man normalerweise nicht sieht, kann man sie eben suchen und ersetzen lassen. Du kannst in Office oben auch auf ein symbol klicken, dann werden dir diese verborgenen Formatierungszeichen angezeigt.
Das funktioniert nicht, die Seite wird kleiner, aber der Text bleibt in einer Zeile.