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に適用されます。