Pular para o conteúdo

Remover acentos

Este é um problema que eu, sinceramente, nunca tive mas recentemente um dos leitores do Função Excel me passou um arquivo em que ele precisava dessa função e já a tinha implementado. Eu simplesmente peguei a função dele, dei uma leve melhorada e aqui está ela para todos.

A ideia é muito simples, você tem um palavra que possui acentos, mas por algum motivo você precisa remover os acentos dessa palavra, simples assim. Para resolver este problema de forma rápida e permanente você pode usar uma UDF (User defined function) ou seja, uma função definida pelo usuário, que nada mais é do que uma função criada pelo usuário. Já escrevemos sobre isso uma vez, você pode conferir clicando aqui.

Com preguiça de ler? Assista ao vídeo!
Caso contrário, é só descer mais um pouco e continuar a leitura.

Coloque o vídeo em tela cheia para assistir normalmente

Resolveu continuar lendo? Então vamos nessa!


Download de arquivo usado no vídeo

Baixe aqui o arquivo utilizado no vídeo, para poder testar o mesmo por conta própria.

[sociallocker id=”30968″] Download “Sem acento” Função Excel - Sem Acento.xlsm – Baixado 10969 vezes – 54,87 KB


Criando a UDF

A UDF é uma macro (VBA) porém com características diferentes pois aparecerá como uma função normal do Excel, como um PROCV por exemplo.

  1. Aperte ALT + F11 para abrir o editor VBA
  2. No menu da esquerda clique com o botão direito do mouse crie um novo módulo
  3. Escreva o código a seguir no quadro que se abre a direita.

Caso tenha assistido ao vídeo, notará que o nome das variáveis e constantes presentes nele, têm nomes diferente dos que estão aqui no texto. Isso porque o vídeo é bem mais recente que o post, e nele fiz algumas alterações para facilitar o entendimento. A lógica permanece exatamente a mesma.

Function Acento(Caract As String)
 Dim A As String
 Dim B As String
 Dim i As Integer
 Const AccChars = "ŠŽšžŸÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÙÚÛÜÝàáâãäåçèéêëìíîïðñòóôõöùúûüýÿ"
 Const RegChars = "SZszYAAAAAACEEEEIIIIDNOOOOOUUUUYaaaaaaceeeeiiiidnooooouuuuyy"
 For i = 1 To Len(AccChars)
 A = Mid(AccChars, i, 1)
 B = Mid(RegChars, i, 1)
 Caract = Replace(Caract, A, B)
 Next
 Acento = Caract
End Function

Conforme as imagens:

Se quer saber por que minha tela de código é preta e não branca, clique aqui.

E é só isso, está pronto. Antes de irmos para o exemplo prático, vamos entender como funciona essa macro.


Como esta macro funciona

Normalmente quando criamos uma macro ela começa com Sub ou Private Sub mas você deve ter notado que esta começa com Function pois se trata de uma UDF. Esta função foi nomeada de Acento e é assim que iremos nos referenciar a ela dentro do Excel, e possui apenas um argumento, chamado Caract que nada mais é do que o texto ou palavra com acento. Para fins comparativos, a função PROCV utiliza 4 argumentos, separados pelo ; (ponto e virgula), a função Acento, que acabamos de criar, possui apenas um.

Primeiro definimos 3 variáveis que serão utilizadas pela função, são elas as variáveis ABi além de duas constantes chamadas de AccChars RegChars.

O trecho do código que diz:

For i = 1 To Len(AccChars)

Significa que um certo código será repetido enquanto a variável i for menor que o número de caracteres presentes na constante AccChars.

Os trechos:

A = Mid(AccChars, i, 1)
B = Mid(RegChars, i, 1)

Significam que a variável A será a letra que estiver na posição i da variável AccChars. Quando i for igual a 1 então A será igual a primeira letra de de AccChars, isso se repete até que acabem as letras de AccChars. O mesmo acontece bom B porém ao invés de ser uma letra em AccChars será ma letra presente em RegChars.

E o trecho que diz:

Caract = Replace(Caract, A, B)

Este trecho faz com que sempre que a palavra ou texto que se deseja remover os acentos, tiver uma letra presente em AccChars, está letra (com acento) é substituída pela mesma letra presente em RegChars (sem acento). Isso é repetido até que todas as letras presentes em ACCCharsRegChars sejam substituídas.

E a última linha da função:

Acento = Caract

Faz com que o resultado da função Acento seja igual a Caract que teve todas suas letras com acentos substituídas por letras sem acento.


Exemplo prático

A imagem abaixo mostra uma pequena lista de palavras com acento e o resultado obtido com a UDF Acento.


Acompanhe o Função Excel
   

2 comentários em “Remover acentos”

Deixe um comentário ou uma dúvidaCancelar resposta

Sair da versão mobile