キーワードオカレンスリストの生成(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 ScriptingRuntimeライブラリを有効にしてください。 (これを行うには、Visual Basic Editorで、[ツール]、[参照]の順にクリックし、ライブラリを見つけて、その横にあるチェックボックスをクリックし、最後に[OK]をクリックします。)
マクロを使用するには、集計するキーワードを含むセル(Martynの場合、列Bのセル)を選択してから、マクロを実行します。列Aのキーワードと、列Bに各キーワードが出現する回数をリストする新しいワークシートを作成します。
書かれているように、マクロはキーワードの大文字と小文字を区別しません。これは、たとえば、「オレンジ」が「オレンジ」と同じであることを意味します。キーワードリストで大文字と小文字を区別する場合は、LCaseステートメントを削除するだけです。マクロで1回だけ使用されます。
また、マクロを実行する前に行った選択でキーワードが出現する順序で、キーワードが新しいワークシートにリストされていることにも注意してください。ワークシートに入ると、必要に応じてキーワードを簡単に並べ替えることができます。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(13499)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。