Experimente esta macro curta:
Sub KeyWord()
Dim Na As Long, Nc As Long, ary, s As String
Dim r As Range, a, i As Long, outpt As String
Na = Cells(Rows.Count, "A").End(xlUp).Row
Nc = Cells(Rows.Count, "C").End(xlUp).Row
ReDim ary(1 To Nc)
i = 1
For Each r In Range("C1:C" & Nc)
ary(i) = r.Text
i = i + 1
Next r
For i = 1 To Na
s = Cells(i, "A").Value
outpt = ""
For Each a In ary
If InStr(1, s, a) > 0 Then
outpt = outpt & "," & a
End If
Next a
If outpt = "" Then
Else
Cells(i, "E").Value = Mid(outpt, 2)
End If
Next i
End Sub
por exemplo:
EDIT#1:
Nossopequenotruqueparacapturarapenaspalavrascompletasécercarcadapalavra-chavecomespaçosecadasentençacomespaços.
Issosignificaque[espaço]o[espaço]nãocorresponderáteatro!:
SubKeyWord_II_TheSequel()DimNaAsLong,NcAsLong,ary,sAsStringDimrAsRange,a,iAsLong,outptAsStringNa=Cells(Rows.Count,"A").End(xlUp).Row
Nc = Cells(Rows.Count, "C").End(xlUp).Row
ReDim ary(1 To Nc)
i = 1
For Each r In Range("C1:C" & Nc)
ary(i) = r.Text
ary(i) = " " & ary(i) & " "
i = i + 1
Next r
For i = 1 To Na
s = Cells(i, "A").Value
s = " " & s & " "
outpt = ""
For Each a In ary
If InStr(1, s, a) > 0 Then
outpt = outpt & "," & a
End If
Next a
If outpt = "" Then
Else
Cells(i, "E").Value = Mid(outpt, 2)
End If
Next i
End Sub