Gleiche Wörter Zählen?

  • geschlossen
  • Word

  • Carlos-X
  • 5999 Aufrufe 9 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Gleiche Wörter Zählen?

    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
  • Jolina schrieb:

    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.
    Internette Grüße
    von der Nautilus
    cpt. Nemo
  • oder hiermit:

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

    Quellcode

    1. Sub WortZaehlen()
    2. Titel = "Zeichenfolge zählen"
    3. Q = Chr(34)
    4. Antwort = InputBox("Nach welcher Zeichenfolge soll gesucht werden?", Titel)
    5. If Antwort = "" Then Exit Sub
    6. With ActiveDocument.Range.Find
    7. .Text = Antwort
    8. '.MatchWholeWord = True
    9. '.MatchCase = True
    10. While .Execute
    11. Anz = Anz + 1
    12. Wend
    13. End With
    14. strT = "Für die Zeichenfolge " & Q & Antwort & Q & " wurden " & _
    15. Anz & " Entsprechungen gefunden."
    16. MsgBox strT, vbInformation, Titel
    17. End Sub
    Alles anzeigen


    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:

    Quellcode

    1. Option Compare Binary
    2. Sub AlleWorteListen()
    3. Dim i As Integer, k As Integer
    4. Dim Anz As Integer, AnzW As Integer, AnzW2 As Integer
    5. Dim aWorte(), aWorte2()
    6. Dim Wort As String
    7. Dim newDoc As Document
    8. Dim found As Boolean
    9. Anz = ActiveDocument.Words.Count
    10. ReDim aWorte(Anz, 2)
    11. If Anz > 0 Then
    12. For i = 1 To Anz
    13. found = False
    14. Wort = ActiveDocument.Words(i)
    15. If Len(Wort) > 1 Then
    16. For k = 1 To i
    17. If aWorte(k, 1) = Wort Then
    18. found = True
    19. AnzW = IIf(aWorte(k, 2) = Null, 0, aWorte(k, 2))
    20. aWorte(k, 2) = AnzW + 1
    21. End If
    22. Next k
    23. If Not found Then
    24. aWorte(i, 1) = Wort
    25. aWorte(i, 2) = 1
    26. End If
    27. End If
    28. Next i
    29. End If
    30. 'Jetzt die leeren Zeile entfernen
    31. AnzW2 = 0
    32. For i = 1 To UBound(aWorte)
    33. If Len(Trim(aWorte(i, 1))) > 0 Then AnzW2 = AnzW2 + 1
    34. Next i
    35. ReDim aWorte2(AnzW2, 2)
    36. k = 0
    37. For i = 1 To UBound(aWorte)
    38. If Len(Trim(aWorte(i, 1))) > 0 Then
    39. k = k + 1
    40. aWorte2(k, 1) = aWorte(i, 1)
    41. aWorte2(k, 2) = aWorte(i, 2)
    42. End If
    43. Next i
    44. Set newDoc = Documents.Add
    45. For i = 1 To UBound(aWorte2)
    46. newDoc.Content.InsertAfter aWorte2(i, 1) & Chr(9) _
    47. & "Vorkommen: " & aWorte2(i, 2) & " Mal" & Chr(13)
    48. Next i
    49. newDoc.Content.Sort SortOrder:=wdSortOrderAscending
    50. With Selection
    51. .WholeStory
    52. .ParagraphFormat.TabStops.ClearAll
    53. .ParagraphFormat.TabStops.Add _
    54. Position:=CentimetersToPoints(6), _
    55. Alignment:=wdAlignTabLeft, _
    56. Leader:=wdTabLeaderDots
    57. .HomeKey Unit:=wdStory
    58. End With
    59. End Sub
    Alles anzeigen

    ... und wie du damit umgehst, hat ja schon taurus geschrieben.
    Internette Grüße
    von der Nautilus
    cpt. Nemo
  • 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!
  • Carlos-X schrieb:

    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

    Quellcode

    1. newDoc.Content.Sort SortOrder:=wdSortOrderAscending

    sorgt dafür. Ansonsten: Ja, bei größeren Dokumenten kann es schon etwas dauern ...
    Internette Grüße
    von der Nautilus
    cpt. Nemo