Encontrar, combinar apenas palavras inteiras com solução alternativa

Encontrar, combinar apenas palavras inteiras com solução alternativa

Acabei de notar que não há opção no Excel Find para "corresponder apenas à palavra inteira" (não estou falando de "corresponder ao conteúdo da célula inteira"), por exemplo, pesquisar por "parte" não deve corresponder a "parceiro". O MS Word tem esta opção (verifique a captura de tela do MS Word).

Existe uma solução alternativa para isso no Excel?

Word - exemplo de 'Encontrar apenas palavras inteiras'

Responder1

Conforme apontado por Scott, minha resposta original estava errada.

Devido à infinidade de maneiras de definir o limite de uma palavra, isso será difícil de fazer com um forumla. Acho que é por isso que \b(limite de palavra) existe em expressões regulares. Se ao menos pudéssemos usá-los na caixa de diálogo localizar/substituir do Excel.

Instale este suplemento do Excel,http://www.codedawn.com/excel-add-ins.phpclique no novoEncontre e substitua RegExbotão (ou opção de menu em 2003) e use este termo de pesquisa \bword\b, desmarque/marque a caixa de correspondência e clique em Localizar.

É importante que os b estejam em letras minúsculas e você terá que aprender um pouco sobre expressões regulares (recomendoesse site) se você quiser pesquisar algo que envolva pontuação, mas não há problema em colocar qualquer letra/número padrão entre as \btags, se isso for tudo o que você deseja pesquisar.

Acho que cobri a maioria dos casos com este teste: imagem de teste

Responder2

Em termos de fórmula, você pode pesquisar por "Word" (sem distinção entre maiúsculas e minúsculas) com esta fórmula para obter TRUE apenas para a palavra exata, assumindo que não há pontuação

=ISNUMBER(SEARCH(" Word "," "&A1&" "))

Isso retornaria TRUE para texto como

uma palavra para o sábio ouGraxa é a palavra

e corretamente FALSO paraEspada de Dâmocles.....mas você também obteria FALSE para algo como

Minha palavra!porque o ponto de exclamação anula a correspondência

Para lidar com a pontuação, você pode usar múltiplas funções SUBSTITUTE, por exemplo, para ignorar vírgula, ponto e vírgula e ponto de exclamação, você pode usar esta versão

=ISNUMBER(SEARCH(" Word "," "&SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,",",""),";",""),"!","")&" "))

Responder3

Ao inserir os parâmetros na seção “Localizar”, basta incluir um espaço antes ou depois da palavra. No meu caso, "Van" impedia que "SAVANA" mudasse, e "Man" impediria que "Mankind" mudasse.

Responder4

Eu encontrei uma solução para esse problema.

Você deve criar uma função que chamará depois de fazer sua pesquisa padrão e encontrar 1 resultado.

A função vai verificar se a palavra é inteira ou nota. Aqui está o código da função:

Ele verifica o caractere antes e depois da expressão encontrada e se NÃO for uma letra (acentuada ou não) retorna verdadeiro, caso contrário, falso.

Function WholeWord(ByVal text As String, ByVal expression As String) As Boolean

Dim aux1 As Integer: aux1 = 0
Dim aux2 As Integer: aux2 = 0


Dim condition1 As Boolean: condition1 = False
Dim condition2 As Boolean: condition2 = False

aux1 = InStr(1, text, expression, vbTextCompare)

If aux1 = 1 Then
condition1 = True
Else
If UCase(Mid(text, aux1 - 1, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition1 = True
End If
End If

aux2 = aux1 + Len(expression)

If aux2 = Len(text) + 1 Then
condition2 = True
Else
If UCase(Mid(text, aux2, 1)) Like "[!A-ZÂÊÎÔÛÁÉÍÓÚÇÃÕÀÈÌÒÙÄËÏÖÜ]" Then
condition2 = True
End If
End If

If condition1 = True And condition2 = True Then
WholeWord = True
Else
WholeWord = False
End If

End Function

informação relacionada