Neste artigo você aprenderá como criar funções no Excel com VBA. Este recurso é muito interessante funções que não existem no Excel.
O que são Funções no Excel?
No Excel nós temos centenas de funções que permitem resolver diferentes problemas. E com a união das funções nós podemos criar fórmulas complexas que resolvem ainda outros tipos de problema, criando assim uma infinidade de possibilidades.
Porém tem situações que não conseguem ser resolvidas diretamente pelo Excel, pois não há funções Excel que tenham determinadas funcionalidades.
Neste sentido, podem ser criadas novas funções no Excel utilizando Lambda ou VBA como veremos neste artigo.
Como Criar Funções VBA no Excel
Para criar funções no VBA a primeira necessidade é habilitar a guia desenvolvedor. Para tanto, siga este artigo Como Habilitar Guia Desenvolvedor.
Após isso clique no botão Inserir->Módulo é nele que iremos inserir as nossas funções VBA.
Veja aqui 10 exemplos de funções VBA feitas em Excel.
1. Função para Contar Caracteres Específicos em uma Célula
Esta função conta quantos caracteres específicos há em uma determinada célula.
Function ContaCaracter(texto As String, caractere As String) As Integer
ContaCaracter = Len(texto) - Len(Replace(texto, caractere, ""))
End Function
Com isso a função já está pronta para ser utilizada no Excel.
Para a utilizar apenas digite em uma célula a chamada da função: =ContaCaracter(A1; “a”), neste caso contando a letra a na célula A1.
2. Função para Somar Números em um Texto
Esta função permite a extrair números em textos de uma célula e realizar a soma dos valores.
Function SomaNumerosTexto(texto As String) As Double
Dim i As Integer
Dim num As String
Dim total As Double
For i = 1 To Len(texto)
If IsNumeric(Mid(texto, i, 1)) Then
num = num & Mid(texto, i, 1)
Else
If num <> "" Then
total = total + CDbl(num)
num = ""
End If
End If
Next i
If num <> "" Then
total = total + CDbl(num)
End If
SomaNumerosTexto = total
End Function
Um exemplo da aplicação seria em um texto na célula A1 que tenhamos “50 laranjas e 30 tangerinas” e para realizar a soma usamos =SomaNumerosTexto(A1).
Com isso temos os valores somados de 50 e 30, totalizando 80.
3. Função para Contar Palavras no Excel
Esta função realiza a contagem de palavras em células ou texto diretamente inserido na função.
Function ContaPalavras(texto As String) As Integer
ContaPalavras = Len(Trim(texto)) - Len(Replace(Trim(texto), " ", "")) + 1
End Function
Para aplicar o código acima basta selecionar uma célula que tenha palavras para serem contadas, chamando ela desta forma =ContaPalavras(A1).
4. Função para Encontrar a Última Ocorrência de um Valor no Excel
Esta função encontra a última ocorrência de um valor em uma determinada coluna ou linha.
Function UltimaOcorrencia(valor As Variant, rng As Range) As Long
Dim cel As Range
For Each cel In rng
If cel.Value = valor Then
UltimaOcorrencia = cel.Row
End If
Next cel
End Function
5. Função para Verificar Data Vencida
Esta função permite verificar se uma determinada data em uma célula está vencida.
Function VerificarVencimento(data As Date) As String
If data < Date Then
VerificarVencimento = "Vencida"
Else
VerificarVencimento = "Dentro do Prazo"
End If
End Function
Para aplicar a função basta digitar =VerificarVencimento(A1), sendo A1 um campo com data.
6. Função para Retornar a Data e Hora Atual com Fuso Horário Personalizado
Esta função permite retornar a data e hora atual em um determinado local, para isso deve passar o valor de ajuste na célula.
Function HoraLocal(offset As Double) As Date
HoraLocal = Now + (offset / 24)
End Function
7. Função para Remover Caracteres Especiais de uma String
Esta função limpa o texto de caracteres especiais no Excel.
Function LimparTexto(texto As String) As String
Dim chars As String
chars = "!@#$%^&*()_+=<>?/|\"
Dim i As Integer
For i = 1 To Len(chars)
texto = Replace(texto, Mid(chars, i, 1), "")
Next i
LimparTexto = texto
End Function
8. Função para Retornar a Data Mais Recente de um Intervalo
Esta função procura a maior data em um intervalo de células no Excel.
Function DataMaisRecente(rng As Range) As Date
DataMaisRecente = Application.WorksheetFunction.Max(rng)
End Function
9. Função para Calcular a Média Ponderada Excel
Esta função calcula a média ponderada de um conjunto de números no qual pode fornecedor pesos diferentes para cada valor.
Function MediaPonderada(valores As Range, pesos As Range) As Double
Dim somaValores As Double
Dim somaPesos As Double
Dim i As Integer
' Verifica se o número de valores e pesos é o mesmo
If valores.Count <> pesos.Count Then
MediaPonderada = CVErr(xlErrValue) ' Retorna erro se o tamanho for diferente
Exit Function
End If
' Calcula a soma dos valores ponderados e a soma dos pesos
For i = 1 To valores.Count
somaValores = somaValores + valores(i) * pesos(i)
somaPesos = somaPesos + pesos(i)
Next i
' Verifica se a soma dos pesos é diferente de zero
If somaPesos = 0 Then
MediaPonderada = CVErr(xlErrDiv0) ' Retorna erro de divisão por zero
Else
MediaPonderada = somaValores / somaPesos
End If
End Function
Como exemplo digamos que temos nas células A1 à A3 os valores 80, 90 e 100 e nas células entre B1 e B3 nós temos os valores dos pesos 0,2; 0,3 e 0,5 e com isso temos a aplicação da função =MediaPonderada(A1:A3, B1:B3).
10. Função para Converter Celsius em Fahrenheit
Esta é uma função para converter graus Celsius para Fahrenheit no Excel.
Function CelsiusParaFahrenheit(celsius As Double) As Double
CelsiusParaFahrenheit = (celsius * 9 / 5) + 32
End Function
Para aplicar usamos a seguinte função =CelsiusParaFahrenheit(25), na qual o valor 25 é convertido em Fahrenheit.
Como Colocar Funções Globais
Para aplicar as funções personalizadas no Excel de modo que sempre esteja disponíveis no Excel podemos criar um suplemento e colocar as funções em um módulo neste arquivo.
Criar um Suplemento VBA Excel
- Abra um novo documento no Excel e clique em salvar, nomeie com um nome sugestivo como Minhas funções, no campo Salvar como tipo: altere o tipo para Suplemento do Excel(*.xlam).
Inserindo uma função no Suplemento VBA
- Clique em Guia desenvolvedor->Visual Basic.
- Lá selecione na guia de projetos VBAProject(Minhas funções.xlam) que acabou de ser criado.
- Com o projeto selecionado, clique no menu Inserir->Módulo.
- Será criado um novo módulo, clique duas vezes sobre ele e insira o código de uma das 10 funções citadas acima ou crie a sua.
- Clique no botão Salvar e feche a janela do Visual Basic.
Inserindo o Suplemento VBA no Excel
- Clique no ícone do Excel e depois no botão Opções.
- Clique no botão Suplementos.
- Selecione no botão Gerenciar o tipo Suplementos do Excel e clique no botão Ir.
- Irá abrir uma tela para inserir o suplemento criado
- Clique no botão Procurar e selecione o arquivo de suplemento que você criou.
- Pronto! O suplemento estará com as funções disponíveis para uso.
Para usar a função basta abrir um documento qualquer ou criar um novo, digitar dois valores nas células A1 e A2 por exemplo e utilizar a função digitando o nome da sua função, no nosso caso =fAdd(A1;A2).
Conclusão
A criação de funções personalizadas no Excel podem ser feitas utilizando a nova função Lambda ou criando funções VBA no Excel.
Como vimos, há situações específicas que somente podem ser feitas utilizando funções como as que citamos nos códigos ao longo deste artigo.







