Martyn có một trang tính bao gồm khá nhiều từ khóa trong cột B.

Bất kỳ ô riêng lẻ nào cũng có thể có bất kỳ số lượng từ khóa duy nhất nào, mỗi từ khóa được phân tách bằng dấu cách. Anh ta cần một cách để tạo danh sách các từ khóa duy nhất cùng với số hàng chứa mỗi từ khóa.

Không có cách nào đơn giản để tạo danh sách từ khóa bằng công thức. Tuy nhiên, bạn có thể thực hiện nhanh chóng danh sách như vậy bằng cách sử dụng macro. Sau đây là một ví dụ sẽ thực hiện công việc rất nhanh chóng.

Sub KeywordList()

Dim dTally As Dictionary     Dim rSource As Range     Dim c As Range     Dim d As Variant     Dim aKeys() As String     Dim J As Integer     Dim sTemp As String

Set dTally = New Dictionary     Set rSource = Selection     For Each c In rSource         ' Put all keywords in an array         aKeys = Split(c, " ")

For J = LBound(aKeys) To UBound(aKeys)

sTemp = LCase(Trim(aKeys(J)))

If Len(sTemp) > 0 Then                 If dTally.Exists(sTemp) Then                     ' Increment existing keyword                     dTally(sTemp) = dTally(sTemp) + 1                 Else                     ' Add new keyword and count                     dTally.Add sTemp, 1                 End If             End If         Next J         Erase aKeys     Next c

' Now have all the keywords in a dictionary object     ' Add a new worksheet to store the list     Worksheets.Add     Cells(1, 1) = "Keyword"

Cells(1, 2) = "Count"



J = 1     For Each d In dTally.Keys         J = J + 1         Cells(J, 1) = d         Cells(J, 2) = dTally(d)

Next d End Sub

Nếu macro không hoạt động trên hệ thống của bạn, có thể là do Excel không nhận dạng được đối tượng Từ điển. Nếu bạn nghi ngờ trường hợp này, hãy đảm bảo bạn bật thư viện Microsoft Scripting Runtime trong VBA. (Bạn thực hiện việc này trong Visual Basic Editor bằng cách nhấp vào Công cụ | Tham chiếu, định vị thư viện, nhấp vào hộp kiểm bên cạnh nó, và cuối cùng nhấp vào OK.)

Để sử dụng macro, chỉ cần chọn các ô có chứa các từ khóa bạn muốn kiểm đếm (trong trường hợp của Martyn, đó sẽ là các ô trong cột B) và sau đó chạy macro. Nó tạo một trang tính mới liệt kê các từ khóa trong cột A và trong cột B, số lần mỗi từ khóa xuất hiện.

Như đã viết, macro không chú ý đến trường hợp của các từ khóa; ví dụ, điều này có nghĩa là “Orange” giống với “cam”. Nếu bạn muốn danh sách từ khóa phân biệt chữ hoa chữ thường, thì bạn chỉ cần xóa câu lệnh LCase; nó chỉ được sử dụng một lần trong macro.

Bạn cũng nên biết rằng các từ khóa được liệt kê trong trang tính mới theo thứ tự mà chúng xuất hiện trong lựa chọn bạn thực hiện trước khi chạy macro. Khi ở trong trang tính, bạn có thể dễ dàng sắp xếp các từ khóa, nếu muốn.

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

Mẹo này (13499) áp dụng cho Microsoft Excel 2007, 2010, 2013 và 2016.