Khi bạn đang phân tích tài liệu của mình, bạn có thể tự hỏi liệu có cách nào để tạo số lượng từ trong tài liệu không. Thật không may, Word không bao gồm một tính năng như vậy, nhưng có một số điều bạn có thể làm.

Trước tiên, nếu bạn muốn biết số lần một từ hoặc cụm từ cụ thể được sử dụng, bạn có thể làm theo các bước sau:

  1. Nhấn Ctrl + H để hiển thị tab Thay thế của hộp thoại Tìm và Thay thế. (Xem Hình 1.)

  2. Trong hộp Tìm gì, hãy nhập từ hoặc cụm từ bạn muốn đếm.

  3. Trong hộp Thay thế Bằng, nhập ^ &. Chuỗi ký tự này cho Word biết rằng bạn muốn thay thế những gì bạn tìm thấy bằng bất kỳ thứ gì bạn đã đặt trong hộp Tìm gì. (Nói cách khác, bạn đang thay thế từ hoặc cụm từ bằng chính nó.)

  4. Nếu bạn đang tìm kiếm các từ riêng lẻ, hãy đảm bảo rằng bạn nhấp vào hộp kiểm Chỉ Tìm Toàn bộ Từ.

  5. Nhấp vào Thay thế Tất cả. Word thực hiện thay thế và cho bạn biết có bao nhiêu trường hợp mà nó đã thay thế. Đó là con số bạn muốn.

Cách tiếp cận này rất hiệu quả nếu bạn chỉ có một hoặc hai từ hoặc cụm từ mà bạn muốn biết. Bạn có thể tự động hóa quy trình một chút bằng cách sử dụng macro để tìm kiếm trong tài liệu và tính cho bạn. Macro sau sẽ nhắc người dùng nhập một từ, sau đó đếm số lần từ đó xuất hiện trong tài liệu. Nó sẽ tiếp tục yêu cầu một từ khác cho đến khi người dùng nhấp vào nút Hủy.

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

Nếu bạn muốn xác định tất cả các từ duy nhất trong một tài liệu, cùng với số lần mỗi từ trong số chúng xuất hiện trong tài liệu, thì cần có một cách tiếp cận khác. Macro VBA sau sẽ làm điều đó.

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

Khi bạn mở một tài liệu và chạy macro này, bạn sẽ được hỏi xem bạn muốn tạo một danh sách được sắp xếp theo từ hay theo tần suất. Nếu bạn chọn từ, thì danh sách kết quả được hiển thị theo thứ tự bảng chữ cái. Nếu bạn chọn tần suất, thì danh sách kết quả sẽ theo thứ tự giảm dần dựa trên số lần từ xuất hiện trong tài liệu.

Trong khi macro đang chạy, thanh trạng thái cho biết điều gì đang xảy ra.

Tùy thuộc vào kích thước của tài liệu và tốc độ máy tính của bạn, macro có thể mất một lúc để hoàn thành. (Tôi đã chạy nó với một tài liệu dài 719 trang với hơn 349.000 từ và mất khoảng năm phút để hoàn thành.)

Lưu ý rằng có một dòng trong macro đặt giá trị trong chuỗi Loại trừ. Chuỗi này chứa các từ mà macro sẽ bỏ qua khi ghép danh sách từ lại với nhau. Nếu bạn muốn thêm các từ vào danh sách loại trừ, chỉ cần thêm chúng vào chuỗi, giữa [dấu ngoặc vuông]. Ngoài ra, hãy đảm bảo rằng các từ loại trừ ở dạng chữ thường.

Nếu bạn không thích sử dụng macro vì lý do nào đó, bạn có thể sử dụng các chương trình khác để tạo số lượng từ. Ví dụ: trình soạn thảo văn bản NoteTab (phiên bản “nhẹ” có thể được tải xuống miễn phí tại http://www.notetab.com) bao gồm một tính năng cung cấp số lượng từ.

Tất cả những gì bạn cần làm là sao chép toàn bộ tài liệu của mình và dán vào NoteTab. Sau đó, trong NoteTab, chọn Công cụ | Thống kê văn bản | Hơn. Nó trình bày một phân tích về tần suất từ, bao gồm cả tỷ lệ phần trăm.

_Lưu ý: _

Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên các trang WordTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.

WordTips là nguồn của bạn để đào tạo Microsoft Word hiệu quả về chi phí.

(Microsoft Word là phần mềm xử lý văn bản phổ biến nhất trên thế giới.) Mẹo này (1833) áp dụng cho Microsoft Word 97, 2000, 2002 và 2003. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện ribbon của Word (Word 2007 và sau này) tại đây: