生成关键字出现列表(Microsoft Excel)
Martyn有一个工作表,该工作表的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对象。如果您怀疑是这种情况,请确保在VBA中启用Microsoft脚本运行时库。 (您可以通过在Visual Basic编辑器中单击“工具” |“引用”,找到该库,单击它旁边的复选框,最后单击“确定”来执行此操作。)
为了使用该宏,只需选择包含您要计算的关键字的单元格(在Martyn的情况下,这就是B列中的单元格),然后运行该宏。它创建一个新的工作表,该工作表在A列中列出了关键字,在B列中列出了每个关键字出现的次数。
如所写,宏不关注关键字的大小写;例如,这意味着“橙色”与“橙色”相同。如果您希望关键字列表区分大小写,则只需要删除LCase语句即可。在宏中仅使用一次。
您还应该注意,在运行宏之前,关键字在您进行的选择中的出现顺序在新工作表中列出。进入工作表后,您可以根据需要轻松地对关键字进行排序。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(13499)适用于Microsoft Excel 2007、2010、2013和2016。