私は以下にこのコードを持っていますが、これは私がやろうとしていることに非常に近いものです。仕組みは、Excelスプレッドシートの[単語の問題を一覧表示]ボタンを押すと、単語のリストを含む別のワークシートに対して、セルごと、列Aの行ごとにすべてのテキストをスキャンします。(列1の個々のセルにあるものの間に)一致する場合は、一致する単語を列bの隣接する行に配置します。
ここ(http://mintywhite.com/more/software-more/microsoft-excel-analyze-free-text-surveys-feedback-complaints-part-2)は、コードを見つけた記事へのリンクです。リンク(http://mintywhite.com/wp-content/uploads/2011/02/wordcount2.xls)を使用して、.xlsスプレッドシート全体をダウンロードします。
私が探しているのは単純な変更なので、最初のワークシートの列Aの各セル/行に単語が少なくとも5回表示されない限り、「一致」はありません。
Sub WordCount()
Dim vArray, WordIssue, ElementCounter As Variant
Dim lngLoop, lngLastRow As Long
Dim rngCell, rngStoplist As Range
ElementCounter = 2 'setting a default value for the counter
Worksheets(1).Activate
For Each rngCell In Worksheets("Word").Range("A3", Cells(Rows.Count, "A").End(xlUp))
vArray = Split(rngCell.Value, " ") 'spliting the value when there is a space
vrWordIssue = ""
ElementCounter = ElementCounter + 1 'increases the counter every loop
For lngLoop = LBound(vArray) To UBound(vArray)
If Application.WorksheetFunction.CountIf(Sheets("Issue").Range("A2:A" & Sheets("Issue").UsedRange.Rows.Count), vArray(lngLoop)) > 0 Then 'this is to test if the word exist in the Issue Sheet.
If vrWordIssue = "" Then
vrWordIssue = vArray(lngLoop) 'assigning the word
Else
If InStr(1, vrWordIssue, vArray(lngLoop)) = 0 Then 'a binary of comparison
vrWordIssue = vrWordIssue & ", " & vArray(lngLoop) 'this will concatinate words issue that exist in Issue Sheet
End If
End If
End If
Next lngLoop
Worksheets("Word").Range("B" & ElementCounter).Value = vrWordIssue 'entering the final word issue list into cell.
Next rngCell
End Sub