Funções personalizadas no Excel


Todo mundo já utilizou alguma função do Excel, mais simples ou mais complexa, para converter algum formato de número, realizar alguma operação matemática ou automatizar uma planilha.

E provavelmente, todo mundo já se deparou com a “inexistência de uma função”! Procuramos na ajuda do Excel, em fóruns, blogs e nada encontramos que possa resolver o problema dentro da planilha.

Pois bem, meus amigos, a solução é criar uma função customizada!

Uma função, no Excel, é uma rotina que irá executar linhas de comando com base nas variáveis que você passa para sua função. Por exemplo, ao inserir a função =SOMA(), note que você precisa passar uma ou mais variáveis para esta função: a sequência de números que serão somados. Digamos que você insira para esta função: =SOMA(1;10;60;40). O Excel irá chamar a função SOMA e executar as linhas de comando que irão realizar a operação a seguir: 1+10+40+60 = 111

Antes de tudo, para entender uma função no Excel, é necessário entender como funciona o VBA – Visual Basic for Applications – (Leia post “O que é macros e VBA”.)
Muito da programação poderá ser aprendida através da opção de gravar uma macro, assim como exposto no post acima. É desta forma que é possível entender os códigos que o Excel utiliza para descrever uma ação que ele realizará na planilha.

Para criar uma função customizada, você precisa primeiramente abrir seu editor do Visual Basic, pressionando ALT+F11 no Excel. Insira um novo módulo que é onde será escrito seu código. Uma função começa com “Function [Nome da Função]” e termina com “End Function”.

Neste exemplo, vamos criar uma função para remover acentuação de um texto em uma célula.

Digite o código abaixo no editor do Visual Basic:

A função acima recebe e passa um parâmetro, chamada de “variável”, que tem o nome de “Texto”. O código ‘as String’ declara esta variável como um tipo de dado de texto, obrigatoriamente.

Quando o usuário inserir a função =Remover_Acento(), ele precisará passar qual é o ‘texto’ que será utilizado na função, que poderá ser um texto digitado na própria função ou uma referência à uma célula que contém o texto selecionado.

Dentro da função, declaramos as variáveis com a instrução ‘Dim’. Neste exemplo, declaramos três variáveis: ‘Acento’, ‘S_Acento’ e ‘Texto_Novo’, como ‘String’ (texto).

A variável ‘Acento’ irá armazenar todas as letras com acentuação e apóstrofo. A variável ‘S_Acento’, pelo contrário, armazenará todas as letras sem acentuação e um espaço. A ideia é substituir cada letra com acento por uma sem acento, respeitando a sequência, como abaixo.

A variável ‘Texto_Novo’ é atribuída como igual ao valor da variável ‘Texto’ que o usuário passou pela função Remover_Acento.

Depois, vamos inserir o código ‘For… Next’. Esta instrução irá executar os códigos localizados dentro do ‘For’ e finalizados com o ‘Next’ uma determinada quantidade de vezes. Esta quantidade de execuções, neste caso, é o número de letras existentes na variável ‘Acento’: 23.

Para cada iteração (loop), a variável ‘x’ (que não precisa ser declarada obrigatoriamente), incrementa em 1. Na primeira iteração, ‘x’ tem o valor de 1, na segunda, 2. Note que, depois, atribuímos à variável ‘Texto_Novo’ o valor de uma outra função chamada ‘Replace’ (na tradução, significa substituir), função que substitui o texto desejado por outro texto e, dentro dela mesma, utilizamos outra função: ‘Mid’ que retorna o valor de um caractere em uma posição qualquer do texto.

A função ‘Replace’ tem os seguintes atributos obrigatórios:
  • Expression: A expressão que contém o texto a substituir, neste exemplo, ‘Texto_Novo’;
  • Find: O texto que deseja substituir, neste exemplo, o resultado de ‘Mid(Acento, x, 1)’;
  • Replace: O texto que substituirá o texto em ‘Find’, neste exemplo, o resultado de ‘Mid(S_Acento, x, 1)’;

Exemplo: Replace(“ABC”,”B”,”D”) irá retornar: “ADC”.

A função ‘Mid’ tem os seguintes atributos que serão utilizados:
  • String: O texto que será utilizado;
  • Start: Um número que determina a posição de início no texto;
  • Length: Um número que determina a quantidade de caracteres a partir de ‘Start’ que serão retornados.

Exemplo: Mid(“José Silva”, 6, 5) irá retornar “Silva”.

No exemplo, substituímos o parâmetro ‘Start’ de ‘Mid’ por x, ou seja, cada iteração anda pelo texto, sempre retorna uma letra, como parametrizado no ‘Length’ como 1. Para cada iteração utilizamos a função ‘Replace’ com ‘Texto_Novo’ no primeiro parâmetro: a expressão a ser substituída que é sempre igual à anterior, ‘Mid(Acento, x, 1)’ é o segundo parâmetro e ‘Mid(S_Acento, x, 1)’ é o terceiro parâmetro, ou seja, dentro do texto anterior, sempre substituímos uma letra com acento por uma letra correspondente, sem acento.

Por fim, escrevemos a última instrução que é ‘Remover_Acento = Texto_Novo’ que retorna para a função e para o Excel todas as iterações e substituições que realizamos na variável ‘Texto_Novo’. O código final é como abaixo:

Após isso, vá para o Excel e comece a inserir uma função digitando ‘=’ em uma célula e note que surgirá uma função nova e personalizada, a que você criou: =Remover_Acento()

E pronto, você já pode utilizar esta função, criar novas ou utilizar outras mais que publicarei em outros posts que não existem atualmente para o Microsoft Excel e que podem ser complementadas.

Criando uma função personalizada no Excel

Se gostou compartilhe clicando nos botões abaixo e participe deixando um comentário com críticas, sugestões, complementação etc!

1,146 total views, 2 views today

Deixe um comentário

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