Gleiche Wörter Zählen? geschlossen 

Status
Für weitere Antworten geschlossen.

Carlos-X

Registered +
Registriert
März 2007
Beiträge
149
Hallo!

Gibt es eine Möglichkeit mit Word(oder nach dem raus kopieren in irgendwas anderes) eine Liste zu erstellen, in der sämtliche Wörter nach Häufigkeit aufgelistet sind? Also in der Form:

ist: 842
hat: 746
und: 371
außerdem: 209
 
such [word] und dann per hand mitzählen...ne automatische variante gibt es meines wissens nach nicht...
 
such [word] und dann per hand mitzählen...ne automatische variante gibt es meines wissens nach nicht...
Doch, das geht (über einen Walkaround):

Suchen war ja schon nahezu perfekt. Wenn du dann noch mit den gleichen Wort ersetzt (Achtung, Einzelnes Wort und Großschreibung beachten), dann wir dir im Anschluss angezeigt, wie oft das Wort ersetzt worden ist.
 
oder hiermit:

Alt+F11
Dokument auswählen und den Code in das rechte Fenster kopieren
Speichern
Extras --> Makro --> WortZaehlen auswählen

Code:
Sub WortZaehlen()
Titel = "Zeichenfolge zählen"
Q = Chr(34)
Antwort = InputBox("Nach welcher Zeichenfolge soll gesucht werden?", Titel)
If Antwort = "" Then Exit Sub
With ActiveDocument.Range.Find
.Text = Antwort
'.MatchWholeWord = True
'.MatchCase = True
While .Execute
Anz = Anz + 1
Wend
End With
strT = "Für die Zeichenfolge " & Q & Antwort & Q & " wurden " & _
Anz & " Entsprechungen gefunden."
MsgBox strT, vbInformation, Titel
End Sub

greetz
taurus
 
Die Lösungen sind zwar durchaus interessant, passen aber nicht 100% zu meinen Absichten. Im Prinzip will ich drei Sachen überprüfen:

1) Welche Wörter benutze ich extrem oft, evtl. zu oft? Wenn im Text 300 mal das Wort "Außerdem" vorkommt, dann sollte ich mir überlegen, ob das so sein muss und ob es nicht vielleicht auch andere Möglichkeiten gibt, die Sätze zu bauen.

2) Welche Wörter benutze ich in unterschiedlicher Schreibweise? Wenn in der Liste z.B. eMail, Email, email, e-Mail und E-Mail auftauchen, dann sollte ich mich für eine Schreibweise entscheiden.

3) Welche Wörter sind falsch geschrieben? Theoretisch sollten sich unter den einmaligen Begriffen auch Schreibfehler finden, die Word so nicht erkennt. Mais ist etwas zu essen, aber Word kann aus dem Kontext nicht erkennen, dass es sich hier um eine Maus handeln soll. Ich dagegen weiß, dass Mais in meinem Text nichts zu suchen hat.

Wie es aussieht muss ich aber wohl auch weiterhin meine Texte ausschließlich per Hand überprüfen.
 
Carlos-X schrieb:
Die Lösungen sind zwar durchaus interessant, passen aber nicht 100% zu meinen Absichten. Im Prinzip will ich drei Sachen überprüfen:[..]
Na ja, du hattest ja auch nicht zu 100% deine Absichten dargelegt :D
Carlos-X schrieb:
Wie es aussieht muss ich aber wohl auch weiterhin meine Texte ausschließlich per Hand überprüfen.
Nö, glaube ich nicht.
quick and dirty, aber es sollte deinen Wünschen wesentlich näher kommen:
Code:
Option Compare Binary

Sub AlleWorteListen()
Dim i As Integer, k As Integer
Dim Anz As Integer, AnzW As Integer, AnzW2 As Integer
Dim aWorte(), aWorte2()
Dim Wort As String
Dim newDoc As Document
Dim found As Boolean

Anz = ActiveDocument.Words.Count
ReDim aWorte(Anz, 2)

If Anz > 0 Then
For i = 1 To Anz
found = False
Wort = ActiveDocument.Words(i)
If Len(Wort) > 1 Then
For k = 1 To i
If aWorte(k, 1) = Wort Then
found = True
AnzW = IIf(aWorte(k, 2) = Null, 0, aWorte(k, 2))
aWorte(k, 2) = AnzW + 1
End If
Next k
If Not found Then
aWorte(i, 1) = Wort
aWorte(i, 2) = 1
End If
End If
Next i
End If

'Jetzt die leeren Zeile entfernen
AnzW2 = 0
For i = 1 To UBound(aWorte)
If Len(Trim(aWorte(i, 1))) > 0 Then AnzW2 = AnzW2 + 1
Next i
ReDim aWorte2(AnzW2, 2)
k = 0
For i = 1 To UBound(aWorte)
If Len(Trim(aWorte(i, 1))) > 0 Then
k = k + 1
aWorte2(k, 1) = aWorte(i, 1)
aWorte2(k, 2) = aWorte(i, 2)
End If
Next i


Set newDoc = Documents.Add
For i = 1 To UBound(aWorte2)
newDoc.Content.InsertAfter aWorte2(i, 1) & Chr(9) _
& "Vorkommen: " & aWorte2(i, 2) & " Mal" & Chr(13)
Next i

newDoc.Content.Sort SortOrder:=wdSortOrderAscending


With Selection
.WholeStory
.ParagraphFormat.TabStops.ClearAll
.ParagraphFormat.TabStops.Add _
Position:=CentimetersToPoints(6), _
Alignment:=wdAlignTabLeft, _
Leader:=wdTabLeaderDots
.HomeKey Unit:=wdStory
End With
End Sub
... und wie du damit umgehst, hat ja schon taurus geschrieben.
 
Es funktioniert!

Das ist VB code, oder? Wusste gar nicht, dass der sich so leicht in Word einfügen lässt.

Die Laufzeit ist zwar katastrophal und eine Sortierung wäre auch klasse. Aber sortieren lässt sich auch nachträglich mit 2 Klicks und so ein Makro führt man auch nicht 3 Mal am Tag aus.

Vielen Dank!
 
Es funktioniert!

Das ist VB code, oder? Wusste gar nicht, dass der sich so leicht in Word einfügen lässt.
Yepp, es ist VB-Code
Die Laufzeit ist zwar katastrophal und eine Sortierung wäre auch klasse. Aber sortieren lässt sich auch nachträglich mit 2 Klicks und so ein Makro führt man auch nicht 3 Mal am Tag aus.
Ähm, die Liste ist sortiert! Die Zeile
Code:
newDoc.Content.Sort SortOrder:=wdSortOrderAscending
sorgt dafür. Ansonsten: Ja, bei größeren Dokumenten kann es schon etwas dauern ...
 
nein bei word gibt es soetwas nicht das kann nur alle wörter insgesamt zählen musste selber machen
 
@joe,

wie kommst Du darauf? Haben wir nicht oben Lösungen gezeigt, dass es Word bzw. VBA nicht doch kann ;)

Du hast Recht, dass es in Word keinen Button dafür gibt...

greetz
taurus
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben Unten