Dados seus comentários e sua pergunta, parece que você deseja retornar TRUE se alguma palavra em uma frase corresponder a uma palavra na frase adjacente. Uma maneira de fazer isso é com uma função definida pelo usuário (VBA). O seguinte exclui todas as palavras que estão em arrExclude
, que você pode adicionar como achar melhor. Também excluirá quaisquer caracteres que não sejam letras, dígitos ou espaços e quaisquer palavras que consistam em apenas um caractere.
Veja se isso funciona para você.
Outra opção seria dar uma olhada no suplemento gratuito de pesquisa difusa fornecido pelo MS para as versões do Excel 2007 e posterior.
Para inserir essa função definida pelo usuário (UDF), alt-F11
abre o Editor do Visual Basic.
Certifique-se de que seu projeto esteja destacado na janela Explorador de Projetos.
Então, no menu superior, selecione Insert/Module
e
cole o código abaixo na janela que é aberta.
Para usar esta função definida pelo usuário (UDF), insira uma fórmula como
=WordMatch(A1,B1)
em algumas células.
EDIT2: % segmentoFind Matches
alterado para ver se funciona melhor no Mac
Option Explicit
Option Base 0
Option Compare Text
Function WordMatch(S1 As String, S2 As String) As Boolean
Dim arrExclude() As Variant
Dim V1 As Variant, V2 As Variant
Dim I As Long, J As Long, S As String
Dim RE As Object
Dim sF As String, sS As String
'Will also exclude single letter words
arrExclude = Array("The", "And", "Trust", "Family", "II", "III", "Jr", "Sr", "Mr", "Mrs", "Ms")
'Remove all except letters, digits, and spaces
'remove extra spaces
'Consider whether to retain hyphens
Set RE = CreateObject("vbscript.regexp")
With RE
.Pattern = "[^A-Z0-9 ]+|\b\S\b|\b(?:" & Join(arrExclude, "|") & ")\b"
.Global = True
.ignorecase = True
End With
With WorksheetFunction
V1 = Split(.Trim(RE.Replace(S1, "")))
V2 = Split(.Trim(RE.Replace(S2, "")))
End With
'Find Matches
If UBound(V1) <= UBound(V2) Then
sS = " " & Join(V2) & " "
For I = 0 To UBound(V1)
sF = " " & V1(I) & " "
If InStr(sS, sF) > 0 Then
WordMatch = True
Exit Function
End If
Next I
Else
sS = " " & Join(V1) & " "
For I = 0 To UBound(V2)
sF = " " & V2(I) & " "
If InStr(sS, sF) > 0 Then
WordMatch = True
Exit Function
End If
Next I
End If
WordMatch = False
End Function
EDITAR: Aqui está uma captura de tela dos resultados, usando seus exemplos originais e também os exemplos que você deu em um comentário abaixo, onde você indicou que estava com um problema.