Когда вы анализируете свои документы, вы можете задаться вопросом, есть ли способ подсчитать количество слов в документе. К сожалению, в Word нет такой функции, но есть несколько вещей, которые вы можете сделать.

Во-первых, если вы хотите узнать, сколько раз использовалось определенное слово или фраза, вы можете выполнить следующие действия:

  1. Нажмите Ctrl + H, чтобы открыть вкладку «Заменить» в диалоговом окне «Найти и заменить». (См. Рис. 1.)

  2. В поле «Найти» введите слово или фразу, которую вы хотите посчитать.

  3. В поле «Заменить на» введите ^ &. Эта последовательность символов сообщает Word, что вы хотите заменить то, что вы найдете, тем, что вы поместили в поле «Найти». (Другими словами, вы заменяете слово или фразу самим собой.)

  4. Если вы ищете отдельные слова, убедитесь, что вы установили флажок «Искать только слова целиком».

  5. Нажмите «Заменить все». Word выполнит замену и покажет, сколько экземпляров он заменил. Это то число, которое вам нужно.

Этот подход отлично работает, если у вас есть только одно или два слова или фразы, которые вы хотите знать. Вы можете немного автоматизировать процесс, используя макрос для поиска в документе и подсчета за вас. Следующий макрос запрашивает у пользователя слово, а затем подсчитывает, сколько раз это слово встречается в документе. Он будет продолжать запрашивать другое слово, пока пользователь не нажмет кнопку «Отмена».

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

Если вы хотите определить все уникальные слова в документе, а также то, сколько раз каждое из них встречается в документе, тогда необходим другой подход. Следующий макрос сделает именно это.

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            '     Dim aword As Object            '     Dim tmpName 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

Когда вы открываете документ и запускаете этот макрос, вас спрашивают, хотите ли вы создать список, отсортированный по словам или по частоте. Если вы выберете слово, то полученный список будет показан в алфавитном порядке. Если вы выбираете частоту, то результирующий список будет в порядке убывания в зависимости от того, сколько раз слово появлялось в документе.

Пока макрос запущен, строка состояния показывает, что происходит.

В зависимости от размера вашего документа и скорости вашего компьютера макрос может занять некоторое время. (Я запустил его с 719-страничным документом, содержащим более 349 000 слов, и это заняло около пяти минут.)

Обратите внимание, что в макросе есть строка, которая устанавливает значение в строке Excludes. Эта строка содержит слова, которые макрос будет игнорировать при составлении списка слов. Если вы хотите добавить слова в список исключений, просто добавьте их в строку между [квадратными скобками]. Кроме того, убедитесь, что слова исключения указаны в нижнем регистре.

Если вы по какой-то причине не любите использовать макросы, вы можете использовать другие программы для подсчета слов. Например, текстовый редактор NoteTab («облегченную» версию можно бесплатно скачать по адресу https://www.notetab.com/) включает функцию подсчета слов.

Все, что вам нужно сделать, это скопировать весь документ и вставить его в NoteTab. Затем в NoteTab выберите Инструменты | Текстовая статистика | Больше. Он представляет собой анализ частоты встречаемости слов, в том числе в процентах.

_Примечание: _

Если вы хотите знать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах WordTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / wordribbon-WordTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

WordTips — ваш источник экономичного обучения работе с Microsoft Word.

(Microsoft Word — самая популярная программа для обработки текстов в мире.) Этот совет (10761) применим к Microsoft Word 2007, 2010, 2013 и 2016. Вы можете найти версию этого совета для более старого интерфейса меню Word здесь:

link: / word-Generating_a_Count_of_Word_Occurrences [Генерация количества вхождений слов].