terça-feira, 7 de fevereiro de 2017

EXCEL - REMOVER ACENTOS

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.
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
Siga os passos conforme a imagem abaixo:
1
2
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 AB e i além de duas constantes chamadas de AccChars e  RegChars.
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.
A = Mid(AccChars, i, 1) e 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.
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 ACCChars e RegChars sejam substituídas.
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.
4


Nenhum comentário:

Postar um comentário