Criando nossas próprias funções no Excel

21
10727
Criando nossas próprias funções no Excel

São diversas as possibilidades de aplicação do Excel ao nosso fluxo de trabalho. Uma das mais interessantes é a criação das nossas próprias funções na ferramenta, o que nos permite economizar tempo na nossa rotina diária e diminuir a possibilidade de erros. Confira como é fácil.

Curso de VBA em Excel

Qualquer fórmula que utilizamos pode ser transformada numa função, mas primeiro vamos entender como é composta uma função. A função é uma rotina específica que é formada por parâmetros, por exemplo, a função SOMA no MS-Excel tem como parâmetro um intervalo. A função completa ficaria assim: =SOMA(Intervalo) ou =SOMA(A1:A8). E qual a razão para utilizar essa função? Veja como é mais rápido digitar =Soma(A1:A8) em vez de =(A1+A2+A3+A4+A5+A6+A7+A8).

Criando a sua própria função

Agora vamos criar nossa própria função, para isso vamos pegar um cálculo de frete para estudo de caso. Nesse nosso cálculo, precisaremos saber algumas informações listadas aqui.

Neste exemplo consideraremos que a transportadora cobra:

Frete Peso por Tonelada: R$ 200,00

CTRC: 20

Seguro: 0,3%

Nossa fórmula seria: =(((peso / 1000) * 200) + (valor * 0.003) + 20)

Veja que as variáveis apresentadas são apenas peso e valor e toda a fórmula será igual para as demais situações, então vamos criar uma função para enxugar, o que ficaria assim =frete(peso;valor)

O nome da nossa função será frete, nossos parâmetros serão peso e valor. Eles poderiam ser um valor ou uma referência de uma célula, como A5, por exemplo.

Para construirmos nossa função, utilizaremos o Editor Visual Basic, ele pode ser acessado através do Menu Ferramentas >> Macro >> Editor Visual Basic, ou pela tecla de atalho Alt+F11.

Criando nossas próprias funções no Excel

Agora já no editor, precisaremos incluir um módulo. Para que nossa função seja reconhecida pela ferramenta f(x) no MS-Excel, ela deve estar dentro de um módulo. Para incluirmos nossa função, acessaremos o Menu Inserir >> Módulo. Na tela à direita, você localizará o Módulo 1, e é nele que escreveremos nosso código.

A linguagem VBA nos dá diversas possibilidades de trabalhar com o MS-Excel, aqui nos limitaremos à retratar a criação da função. Para iniciarmos uma função, utilizaremos o comando Function. Nosso código ficará assim:

Function frete (peso, valor)

frete = (((peso / 1000) * 200) + (valor * 0.003) + 20)

End Function

Veja na tela a seguir:

Vamos entender cada parte: o comando Function, que inicia a função, indica ao MS-Excel o início da nossa função logo após termos seu nome, no exemplo foi utilizado frete. Dentro dos parênteses, temos os parâmetros chamados de peso e valor separados por vírgulas – os parâmetros sempre serão separados por vírgula.

Dentro do bloco da função temos a fórmula que será executada, note que o nome da função frete recebe a fórmula tendo a atribuição feita pelo sinal de “=“. Logo depois, temos o comando End Function, que é adicionado automaticamente depois que digitamos a linha Function e clicamos em Enter para ir até a próxima linha.

Curso de VBA em Excel

Com isso, nossa função já está pronta, mas como utilizá-la?

Fechando o Editor Visual Basic, voltaremos à planilha do MS-Excel, uma vez lá, clique no Menu Inserir >> Função.

Dentro da janela Inserir Função, temos a opção de selecionar a categoria. Veja que essa lista agora apresentará a opção Definida pelo usuário e na caixa abaixo,a função frete será apresentada.

Outra maneira é digitarmos diretamente a função em qualquer célula informando os parâmetros, por exemplo, =frete(1200;3000). Lembre-se que os parâmetros poderão ser números nesse caso ou referência das células onde eles estiverem, como por exemplo, =frete(A1;B1).

Aprender a criar nossas funções nos proporciona uma fácil manutenção do programa, pois há o reaproveitamento de códigos. Depois de criar uma função, é só chamá-la para fazer os cálculos no local desejado. Caso haja alteração da metodologia de cálculo, basta alterar a função para que novos cálculos sejam feitos com base nessa outra metodologia. Isso poupa esforço, tempo e reduz as linhas de código.

Essa é apenas uma das variadas aplicações do Excel que facilitam o dia a dia corporativo. Conheça nossas opções de planilhas empresariais no nosso site!

Curso de VBA em Excel

COMPARTILHAR
Artigo anterior10 dicas que ajudarão você a usar o Excel
Próximo artigoCriando gráficos dinâmicos com barra de rolagem
Rafael Ávila
Administrador e turismólogo, apaixonado pelas possibilidades que o Excel dá para gestores, empreendedores e estudantes. É sócio diretor da área de planilhas na LUZ - Planilhas Empresariais (luz.vc) e é o responsável pelo desenvolvimento das mais de 150 planilhas com foco empresarial e pessoal comercializadas em seu site. Também ministra os cursos online de Excel (cursos.luz.vc) e gosta de ajudar milhares de planilheiros por meio do Fórum e Blog da LUZ.

21 COMENTÁRIOS

  1. eu preciso criar uma função”Function” simples com tres variaveis valor1,valor2,valor3

    se valor1=valor2 então soma valor3

    se valor1≠valor2 então valor3=0

    teria como me ajudar

    • Oi Gustavo,

      já te respondi pelo fórum, para facilitar vou deixar centralizado por lá ok? Se continuar com dúvidas é só me responder por lá com o que não ficou entendido

  2. Consegui seguindo seu conselho criar uma fórmula para que uma célula busque o nome da planilha.
    Porém, tem um problema…
    Utilizo várias planilhas numa pasta de trabalho.
    Criei um com nome modelo, e sempre que insiro uma, copio os dados dessa.
    Ao renomear a planilha, ela não muda automaticamente o nome na célula com a macro.
    Só se vou nela e atualizo.
    E meu excel está para calcular fórmulas automaticamente.
    Como posso fazer???

  3. Bom Dia Rafael, parabéns pelo artigo, fiquei com uma dúvida, o que significa CTRC e como é a lógica dessa função, não entendi direito os cálculos, você poderia me explicar melhor

    • Oi Cláudio, posso sim.

      Você pega o peso e divide por 1000 para saber a quantidade em unidade de tonelada. Esse valor você multiplica por 200 que é o preço por tonelada. Esse valor é somado a ele mesmo multiplicado pelo valor do seguro (0,03 no exemplo) e somado a 20 (que é o CRTC, uma variável em valor para cada transação)

  4. Rafael, por favor, preciso de uma ajuda:
    Tenho o seguinte cenário:
    Em uma coluna, tenho textos a cada linha que remetem a um tipo de arquivo, e na outra coluna, a conclusão dessa tarefa. O que ocorre, é que para cada relatório, existem várias linhas com as bases de dados pertinentes a ele.
    Ex:
    Coluna A Coluna B Coluna C
    Relatório 1 Base 1 Base Recebida
    Relatório 1 Base 2 Base Não recebida
    Relatório 2 Base 1 Base Não Recebida

    Na última coluna, se tiver o exemplo da Base não Recebida em qualquer linha, isso quer dizer que o relatório 1 por exemplo não foi finalizado.
    Quero uma maneira de identificar qq linha que tenha a informação para alocar em um resumo.
    Estou tentando usar o XOR, mas não consigo.
    Pode por gentileza me dar uma luz?

    Muito obrigada

    Att.

    Juliana

    • Oi Juliana, eu sempre tento simplificar o uso da planilha com colunas ou tabelas auxiliares. Nesse caso, você pode fazer um CONT.SES sempre que a coluna A for um relatório e a coluna C for não recebida. Assim você sabe que, sempre que essa função contar qualquer valor a partir de 1, tem itens não recebidos relacionados ao relatório em questão. Espero ter ajudado. Abraços

  5. Cara, Boa noite!

    Sabe como mostrar aquela mensagem de ajuda e aquele balão das variáveis das funções definidas pela usuário assim como é padrão das funções no excel?

    Por exemplo, se eu criar uma função que calcula o IMC (altura, peso), no momento de utilizar eu posso esquecer se criei a função como IMC (atura, peso) ou IMC (peso, altura), caso isso fosse mostrado não haveria engano.

  6. Boa noite Rafael Ávila, eu fiz o procedimento, porem algo saiu errado. Da erro de sintaxe.
    A função é para achar qual a semana do mês que se referem a datas inseridas numa planilha , tipo: 1ª Semana; 2ª semana etc.
    Função: =INT(((A2)-DATA(ANO(A2);MÊS(A2);1))/7)+1&”ª Semana de”&PRI.MAIÚSCULA(TEXTO(A2;”MMMM”))
    A2 corresponde à célula que está inserida a data.
    Como inseri a formula

    Function semana (data)

    =INT(((data)-DATA(ANO(data);MÊS(data);1))/7)+1&”ª Semana de”&PRI.MAIÚSCULA(TEXTO(data;”MMMM”))

    End Function

    Devo ter feito algo errado!
    Agradeço se puder me orientar
    Giovanni

    • Oi Giovanni, olhando apenas a fórmula não consigo ajudar muito, mas recomendo que você use a GUIA FÓRMULA e a funcionalidade de avaliar a fórmula para ver o passo a passo e encontrar onde o erro acontece

  7. Boa tarde, sei que não tem haver com o assunto.

    Gostaria de saber se é possível criar um mecanismo no VBA que envie um e-mail pra duas pessoas especificas toda vez que as celular mudarem de “Válidos” para “Inválidos”

    Existe como fazer isso?

    • Oi Gabriel, tem sim, mas sempre achei essa parte de envio de emails complicada porque depende do provedor de email que será utilizado. De toda forma, existem diversos códigos disponíveis na internet que você pode pegar e replicar

DEIXE UMA RESPOSTA

Por favor, escreva o seu comentário
Por favor, digite seu nome