У Мартина есть рабочий лист, который включает в столбец B довольно много ключевых слов.

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

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

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

Если макрос не работает в вашей системе, это может быть связано с тем, что Excel не распознает объект Dictionary. Если вы подозреваете, что это так, убедитесь, что вы включили библиотеку времени выполнения сценариев Microsoft в VBA. (Это можно сделать в редакторе Visual Basic, щелкнув Инструменты | Ссылки, указав библиотеку, установив флажок рядом с ней и, наконец, нажав кнопку ОК.)

Чтобы использовать макрос, просто выберите ячейки, содержащие ключевые слова, которые вы хотите подсчитать (в случае Мартина, это будут ячейки в столбце B), а затем запустите макрос. Он создает новый рабочий лист, в котором перечислены ключевые слова в столбце A, а в столбце B — сколько раз встречается каждое ключевое слово.

Как написано, макрос не обращает внимания на регистр ключевых слов; это означает, например, что «Апельсин» — это то же самое, что «Апельсин». Если вы хотите, чтобы список ключевых слов был чувствителен к регистру, вам просто нужно удалить оператор LCase; в макросе он используется только один раз.

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

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

Этот совет (13499) применим к Microsoft Excel 2007, 2010, 2013 и 2016.