Encontre, combine a palavra inteira somente solução alternativa

2

Acabei de observar que não há nenhuma 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 essa opção (confira a captura de tela do MS Word).

Existe uma solução para isso no Excel?

    
por Kiranshell 25.09.2012 / 00:48

5 respostas

2

Como apontado por Scott, minha resposta original estava errada.

Por causa da multiplicidade de maneiras que você pode definir um limite de palavra, isso será difícil de fazer com um forumla. Eu acho que é por isso que \b (limite de palavras) existe em expressões regulares. Se pudéssemos usá-los na caixa de diálogo de localização / substituição do Excel.

Instale este suplemento do Excel, link , clique no novo Localizar & Botão Repalce RegEx (ou opção de menu em 2003) e use este termo de pesquisa \bword\b , caso de correspondência untick / tick e clique em Localizar.

É importante que os b's sejam minúsculos e você terá que aprender um pouco sobre expressões regulares (recomendo este site ) se você deseja procurar algo que envolva pontuação, mas não há problema em colocar qualquer letra / número padrão entre as tags \b , se isso é tudo o que você deseja pesquisar.

Acho que cobri a maioria dos casos com esse teste:

    
por 25.09.2012 / 03:50
3

Fórmula-sábio você pode procurar 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 ou A graxa é a palavra

e corretamente FALSE para Sword of Damocles ..... mas você também terá FALSE por algo como

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

Para lidar com a pontuação, você pode usar várias 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,",",""),";",""),"!","")&" "))

    
por 25.09.2012 / 23:03
0

Eu encontrei uma solução para esse problema.

Você deve criar uma função para a qual chamará depois de realizar sua pesquisa padrão e encontrar 1 resultado.

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

Ele verifica o caractere antes e depois da expressão encontrada e, se NÃO é uma letra (acentuada ou não), ela retorna true, senão false.

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
    
por 13.12.2013 / 17:56
0

Ao inserir os parâmetros na seção "Localizar", inclua apenas um espaço antes ou depois da palavra. No meu caso, "Van" impediu que "SAVANA" mudasse, e "Man" impediria que a "Humanidade" mudasse.

    
por 21.01.2014 / 21:44
0

A elegante solução RegEx não funcionou no Excel 2010, mas você pode usar o MS Word para uma solução simples:

  1. Selecione o intervalo no Excel.

  2. Copie-o.

  3. Cole-o em um novo documento do MS Word em branco.

  4. Use o recurso de localizar e substituir do Word, mas selecione "Localizar somente palavras inteiras" no texto que você está pesquisando.

  5. Quando acabar de substituir, copie toda a tabela do Word.

  6. Volte para o Excel. O intervalo ainda está selecionado. Basta colar sua tabela copiada.

por 24.05.2013 / 22:37