Mentre analizzi i tuoi documenti, potresti chiederti se esiste un modo per creare un conteggio del numero di parole nel documento. Sfortunatamente, Word non include questa funzionalità, ma ci sono un paio di cose che puoi fare.

Per prima cosa, se vuoi sapere quante volte viene usata una parola o una frase specifica, puoi seguire questi passaggi:

  1. Premere Ctrl + H per visualizzare la scheda Sostituisci della finestra di dialogo Trova e sostituisci. (Vedi figura 1.)

  2. Nella casella Trova, inserisci la parola o la frase che vuoi contare.

  3. Nella casella Sostituisci con, inserisci ^ &. Questa sequenza di caratteri dice a Word che desideri sostituire ciò che trovi con quello che hai inserito nella casella Trova. (In altre parole, stai sostituendo la parola o la frase con se stessa.)

  4. Se stai cercando singole parole, assicurati di fare clic sulla casella di controllo Trova solo parole intere.

  5. Fare clic su Sostituisci tutto. Word fa le sostituzioni e ti mostra quante istanze ha sostituito. Questo è il numero che vuoi.

Questo approccio funziona alla grande se hai solo una o due parole o frasi di cui vuoi sapere. Puoi automatizzare un po ‘il processo utilizzando una macro per cercare nel documento e contare per te. La seguente macro richiede all’utente una parola e quindi conta il numero di volte in cui quella parola viene visualizzata nel documento. Continuerà a chiedere un’altra parola fino a quando l’utente non fa clic sul pulsante Annulla.

Sub FindWords()

Dim sResponse As String     Dim iCount As Integer

' Input different words until the user clicks cancel     Do         ' Identify the word to count         sResponse = InputBox( _           Prompt:="What word do you want to count?", _           Title:="Count Words", Default:="")

If sResponse > "" Then             ' Set the counter to zero for each loop             iCount = 0             Application.ScreenUpdating = False             With Selection                 .HomeKey Unit:=wdStory                 With .Find                     .ClearFormatting                     .Text = sResponse                     ' Loop until Word can no longer                     ' find the search string and                     ' count each instance                     Do While .Execute                         iCount = iCount + 1                         Selection.MoveRight                     Loop                 End With                 ' show the number of occurences                 MsgBox sResponse & " appears " & iCount & " times"

End With             Application.ScreenUpdating = True         End If     Loop While sResponse <> ""

End Sub

Se desideri determinare tutte le parole univoche in un documento, insieme al numero di volte in cui ciascuna di esse appare nel documento, è necessario un approccio diverso. La seguente macro VBA farà proprio questo.

Sub WordFrequency()

Const maxwords = 9000          'Maximum unique words allowed     Dim SingleWord As String       'Raw word pulled from doc     Dim Words(maxwords) As String  'Array to hold unique words     Dim Freq(maxwords) As Integer  'Frequency counter for unique words     Dim WordNum As Integer         'Number of unique words     Dim ByFreq As Boolean          'Flag for sorting order     Dim ttlwds As Long             'Total words in the document     Dim Excludes As String         'Words to be excluded     Dim Found As Boolean           'Temporary flag     Dim j, k, l, Temp As Integer   'Temporary variables     Dim ans As String              'How user wants to sort results     Dim tword As String            '

' Set up excluded words     Excludes = "[the][a][of][is][to][for][by][be][and][are]"



' Find out how to sort     ByFreq = True     ans = InputBox("Sort by WORD or by FREQ?", "Sort order", "WORD")

If ans = "" Then End     If UCase(ans) = "WORD" Then         ByFreq = False     End If          Selection.HomeKey Unit:=wdStory     System.Cursor = wdCursorWait     WordNum = 0     ttlwds = ActiveDocument.Words.Count

' Control the repeat     For Each aword In ActiveDocument.Words         SingleWord = Trim(LCase(aword))

'Out of range?

If SingleWord < "a" Or SingleWord > "z" Then             SingleWord = ""

End If         'On exclude list?

If InStr(Excludes, "[" & SingleWord & "]") Then             SingleWord = ""

End If         If Len(SingleWord) > 0 Then             Found = False             For j = 1 To WordNum                 If Words(j) = SingleWord Then                     Freq(j) = Freq(j) + 1                     Found = True                     Exit For                 End If             Next j             If Not Found Then                 WordNum = WordNum + 1                 Words(WordNum) = SingleWord                 Freq(WordNum) = 1             End If             If WordNum > maxwords - 1 Then                 j = MsgBox("Too many words.", vbOKOnly)

Exit For             End If         End If         ttlwds = ttlwds - 1         StatusBar = "Remaining: " & ttlwds & ", Unique: " & WordNum     Next aword

' Now sort it into word order     For j = 1 To WordNum - 1         k = j         For l = j + 1 To WordNum             If (Not ByFreq And Words(l) < Words(k)) _               Or (ByFreq And Freq(l) > Freq(k)) Then k = l         Next l         If k <> j Then             tword = Words(j)

Words(j) = Words(k)

Words(k) = tword             Temp = Freq(j)

Freq(j) = Freq(k)

Freq(k) = Temp         End If         StatusBar = "Sorting: " & WordNum - j     Next j

' Now write out the results     tmpName = ActiveDocument.AttachedTemplate.FullName     Documents.Add Template:=tmpName, NewTemplate:=False     Selection.ParagraphFormat.TabStops.ClearAll     With Selection         For j = 1 To WordNum             .TypeText Text:=Trim(Str(Freq(j))) _               & vbTab & Words(j) & vbCrLf         Next j     End With     System.Cursor = wdCursorNormal     j = MsgBox("There were " & Trim(Str(WordNum)) & _       " different words ", vbOKOnly, "Finished")

End Sub

Quando apri un documento ed esegui questa macro, ti viene chiesto se desideri creare un elenco ordinato per parola o per frequenza. Se scegli una parola, l’elenco risultante viene visualizzato in ordine alfabetico. Se scegli la frequenza, l’elenco risultante è in ordine decrescente in base a quante volte la parola è apparsa nel documento.

Mentre la macro è in esecuzione, la barra di stato indica cosa sta succedendo.

A seconda delle dimensioni del documento e della velocità del computer, il completamento della macro potrebbe richiedere del tempo. (L’ho eseguito con un documento di 719 pagine con oltre 349.000 parole e ci sono voluti circa cinque minuti per completarlo.)

Notare che c’è una riga nella macro che imposta un valore nella stringa Esclude. Questa stringa contiene parole che la macro ignorerà quando compone l’elenco di parole. Se desideri aggiungere parole all’elenco di esclusione, aggiungile semplicemente alla stringa, tra [parentesi quadre]. Inoltre, assicurati che le parole di esclusione siano in minuscolo.

Se per qualche motivo non ti piace usare le macro, ci sono altri programmi che puoi usare per creare conteggi di parole. Ad esempio, l’editor di testo NoteTab (la versione “leggera” può essere scaricata gratuitamente all’indirizzo http://www.notetab.com) include una funzione che fornisce un conteggio delle parole.

Tutto quello che devi fare è copiare l’intero documento e incollarlo in NoteTab. Quindi, all’interno di NoteTab, scegli Strumenti | Statistiche del testo | Di Più. Presenta un’analisi della frequenza delle parole, comprese le percentuali.

_Nota: _

Se desideri sapere come utilizzare le macro descritte in questa pagina (o in qualsiasi altra pagina dei siti WordTips), ho preparato una pagina speciale che include informazioni utili.

WordTips è la tua fonte di formazione economica su Microsoft Word.

(Microsoft Word è il software di elaborazione testi più popolare al mondo.) Questo suggerimento (1833) si applica a Microsoft Word 97, 2000, 2002 e 2003. È possibile trovare una versione di questo suggerimento per l’interfaccia a nastro di Word (Word 2007 e più tardi) qui: