この関数をモジュールに記述します。
Public Function WordFinder(searchRange As Range, seekWord As String, iteration As Integer)
Dim rangeCell As Range 'holder cell used in For-Each loop
Dim rangeText As String 'holder for rangeCell's text
Dim counter As Integer
counter = 0
'loop through cells in the range
For Each rangeCell In searchRange.Cells
rangeText = rangeCell.Value 'capture the current cell value
'check if the seek word appears in the current cell
If InStr(rangeText, seekWord) > 0 Then
counter = counter + 1 'increment the occurrence counter
If counter = iteration Then 'this is the occurrence we're looking for
'return it
WordFinder = rangeText
Exit Function
End If
End If
Next rangeCell
WordFinder = "n/a" 'that occurrence number was not found
End Function
結果シートの一番上の行で、各セルに次の式を入力します。
=wordfinder(Sheet2!$A1:$A8,"apple",column())
column()
列ごとに増加するため、一番上の行にコピー/貼り付けするとカウントアップします。ドル記号は、参照が列 A に完全に残ることを確認します。
2 番目のパラメーター ("apple") はセルから取得できますが、ここではハードコーディングしています。
これを行うためのよりエレガントな方法があるかもしれませんが、これは機能するはずの迅速で汚い方法です。