別の可能性は、最初にassyliasが投稿するよりも理解しやすいかもしれませんが、もう少し時間がかかるかもしれません(1,000行では、それほど重要ではないと思います)。
これには、列Eの範囲にmyNamesという名前を付ける必要があります(または、任意の名前でコードを更新するか、Range( "E1:E6")と書くだけです)。また、列Bからランダムな値を移動する場合は、コードでもそれを更新します。
Sub findString()
Dim celString As Range, rngString As Range, celSearch As Range, rngSearch As Range
Dim wks As Worksheet
Set wks = Sheets("Sheet1") 'change sheet reference to whatever your sheet name is
Set rngString = wks.Range("myNames")
Set rngSearch = Intersect(wks.UsedRange, wks.Range("B1").EntireColumn)
For Each celString In rngString
For Each celSearch In rngSearch
If InStr(1, celSearch.Text, celString.Value) > 0 Then
celSearch.Offset(, 1) = celString.Value
End If
Next
Next
End Sub
私はあなたの元の質問にも取り組んだので、Siddharthの回答からカウントを取得してから、これを実行するか、上記のassyliasのコードを実行して、列の横に名前を取得することをお勧めします。ボタンをシートに配置するか、[マクロ]ダイアログボックスを使用してマクロを実行することができます。