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:

Deixe uma resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

52 comentários em “Função para retirar acentos e caracteres especiais no Excel”

  1. 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,

  2. 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

    1. 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

  3. 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

  4. 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?

  5. 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?

  6. “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?

    1. 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)
  7. 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?

    1. 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

  8. 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

  9. 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.