Categorias
VBA

Função para retirar acentos e caracteres especiais no Excel

A função a seguir, programada em VBA para ser utilizada no Excel, serve para retirar quaisquer acentos ou caracteres especiais de uma célula.

Function Acento(caract)

    'Acentos e caracteres especiais que serão buscados na string
    'Você pode definir outros caracteres nessa variável, mas
    ' precisará também colocar a letra correspondente em codiB
    codiA = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
    
    'Letras correspondentes para substituição
    codiB = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"
    
    'Armazena em temp a string recebida
    temp = caract
    
    'Loop que irá de andará a string letra a letra
    For i = 1 To Len(temp)
    
        'InStr buscará se a letra indice i de temp pertence a
        ' codiA e se existir retornará a posição dela
        p = InStr(codiA, Mid(temp, i, 1))
        
        'Substitui a letra de indice i em codiA pela sua
        ' correspondente em codiB
        If p > 0 Then Mid(temp, i, 1) = Mid(codiB, p, 1)
    Next
    
    'Retorna a nova string
    Acento = temp
    
End Function

Para usá-la, no Excel vá em Desenvolvedor > Visual Basic e em seguida em Inserir > Módulo. Lá, cole o código acima e salve o módulo.

Feito isso, agora é possível usar “Acentos(caract)” como uma função qualquer do Excel usando a sintaxe =Acentos(CELULA), como por exemplo:

55 respostas em “Função para retirar acentos e caracteres especiais no Excel”

Não seria mais fácil usar um Replace, pra ir trocando o que achar?

Public Function TextoSemAcentos(texto As String)

    CAcento = "àáâãäèéêëìíîïòóôõöùúûüÀÁÂÃÄÈÉÊËÌÍÎÒÓÔÕÖÙÚÛÜçÇñÑ"
    SAcento = "aaaaaeeeeiiiiooooouuuuAAAAAEEEEIIIOOOOOUUUUcCnN"

    For i = 1 To Len(CAcento)
       texto = Replace(texto, Mid(CAcento, i, 1), Mid(SAcento, i, 1))
    Next i

    TextoSemAcentos = texto

End Function

muito bom.
teria como aplicar de forma a ao inves de trazer noutra celula o resultado, apenas aplicar sobre a atual e converter a mesma?
exemplo:
na celula A1, contem a palavra café e ao executar a macro, ela apenas converta o conteudo da celula a1, para cafe “sem o acento”? como consigo fazer algo assim?

at,

Olá Damião, essa função ajudou muito, mas antes usava a versão 2011, hoje estou com a versão 2015, não estou conseguindo salvar a função, pode me ajudar?

P.S. Uso Mac

Obrigado

Olá Danilo!

Infelizmente não tenho como testar no Mac, mas fiz um teste Office 2016 no Windows.
Para conseguir usar a macro, eu precisei salvar a planilha como “Excel Macro-Enabled Workbook (.xlsm)”. Não tenho certeza se isso era necessário nas versões anteriores do Office.

Abraços

Ao Cogumelo!
Quero agradecer muito sobre a informação de (tirar acentos no excel).
Eu trabalho com access e não sou programador e não tenho paciência para aprender. Pesquisei muito sobre o tema e copiava as expressões em VBS e SQL e nunca dava certo.
Agora fiz isso no access embora era para o excel e deu certo.

Agradecido

Irineu Almeida

Ola eu fiz uns ajustes para deixar automático conforme a seleção do usuário, podendo fazer a verificação em centenas de células

posso comentar aqui o codigo?

Ola Damião, essa função foi-me muito útil, porém quando rodo uma sub qualquer em um outro módulo ele fica chamando essa função o tempo todo.

Pode me informar o que pode estar ocorrendo?

“Para usá-la, no Excel vá em Desenvolvedor > Visual Basic e em seguida em Inserir > Módulo. Lá, cole o código acima e salve o módulo.”

Onde fica o “Desenvolvedor” no Excel 2010?

Para habilitar a aba “Desenvolvedor” vá em:

  • Arquivo (File)
  • Opções (Options)
  • Personalisar Faixa de Opções (Customize Raibbon)
  • Em Guias Principais (Main Tabs), marque “Desenvolvedor” (Developer)

Muito obrigada pela excelente post. Estou com o seguinte problema: utilizei durante alguns dias a função Acento, sem problemas. Sem aparente explicação, ela parou de funcionar e é mostrado #NOME?. A função continua sendo mostrada na lista de funções. Vc poderia me ajudar?

Existem várias maneiras, a mais simples acredito que seja criar uma nova planilha, onde cada célula seria uma referencia a mesma célula na planilha original, mas passando pela função de remover acentos.

Por exemplo, na célula A1 da NovaPlanilha o valor seria =Acentos(PlanilhaOriginal!A1).

Abraços

Muito bom o post, mas quando uma palavra tem ç minúsculo ele troca por C maiúsculo.

Como fazer para ele respeitar minúsculas e maiúsculas ?

Grato

Muito obrigado pela oportunidade de compartilhar essa função. Irei ganhar muito tempo com a utilização da mesma. Segui os passos, testei e funcionou direitinho.

Deixe um comentário para Rafael Malta Cancelar resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *