Guia do Excel

Função para Converter Data Excel | Colocar em data Brasil

Função de converter data Excel. Aprenda como criar uma função pronta e automatizada para converter o formato 2027-01-01 para 01/01/2027.

MR
Marcos Rieper

Especialista em Excel

Atualizado em 09 de agosto de 2026 Publicado em 25 de julho de 2010 13 min de leitura

Função para Converter Data Excel | Colocar em data Brasil

Trabalhar com datas no Excel parece simples até o momento em que precisamos importar informações de outros sistemas. Quando os dados vêm de bancos de dados, arquivos de texto ou consultas SQL, é bastante comum encontrar datas em formatos diferentes daquele utilizado normalmente no Excel no Brasil.

Neste artigo, vamos criar uma Função de Conversão de Data no Excel utilizando VBA. A proposta é simples e prática: criar uma função própria que possa ser utilizada diretamente nas fórmulas da planilha para transformar determinados formatos de data em uma data reconhecida pelo Excel.

Ter uma biblioteca de funções próprias é uma excelente estratégia para quem trabalha frequentemente com Excel e VBA. Em vez de repetir a mesma sequência de fórmulas ou tratamentos sempre que um problema aparece, podemos criar uma função específica, reutilizável e fácil de aplicar.

Esse conceito é especialmente interessante quando trabalhamos com bases importadas de sistemas externos. Uma função personalizada pode receber o valor original, interpretar sua estrutura e devolver o resultado já convertido para o formato esperado.

Neste exemplo, vamos trabalhar com dois formatos de data utilizados no conteúdo original: 2010-07-01 00:00:00 e 2010/07/01. A lógica apresentada pode ser utilizada como base para outros formatos, conforme a estrutura dos dados que você recebe.

Por que precisamos converter datas no Excel?

O Excel trabalha internamente com datas de uma maneira diferente da representação textual que encontramos em muitos sistemas. Uma informação como 01/07/2027 pode ser uma data real no Excel, enquanto um conteúdo como 2027-07-01 00:00:00 pode chegar como texto, dependendo da origem dos dados e da forma como a informação foi importada.

Essa diferença pode causar problemas em filtros, classificações, cálculos, tabelas dinâmicas e outras operações que dependem de uma data reconhecida pelo Excel.

Imagine, por exemplo, que você receba diariamente uma consulta SQL contendo registros com datas e horários. Se essas informações chegarem como texto, funções de data podem não funcionar como esperado.

Uma solução é tratar os dados antes de utilizá-los. Podemos fazer isso com fórmulas, Power Query ou VBA. Neste artigo, vamos utilizar VBA porque o objetivo é criar uma função própria de conversão que possa ser chamada diretamente na planilha.

O que é uma função própria no Excel?

Uma função própria, também conhecida como UDF (User Defined Function), é uma função criada pelo próprio usuário utilizando VBA.

Depois de criada, ela pode ser utilizada em uma célula praticamente da mesma forma que uma função nativa do Excel, dependendo de como foi desenvolvida e disponibilizada.

Por exemplo, em vez de executar vários comandos manualmente para converter uma data, podemos utilizar uma fórmula semelhante a:

=gfConverteData(A2)

Nesse caso, o valor da célula A2 será enviado para a função VBA, que realizará a conversão de acordo com as regras definidas no código.

Essa abordagem possui uma vantagem importante: a regra de conversão fica centralizada no código. Se você precisar utilizar o mesmo tratamento em dezenas, centenas ou milhares de células, não será necessário recriar a lógica em cada lugar.

Quando essa função pode ser útil?

A função é particularmente útil quando trabalhamos com dados provenientes de bancos de dados e consultas SQL. Dependendo do sistema utilizado, uma data pode ser retornada acompanhada do horário e utilizando uma estrutura diferente daquela que o usuário está acostumado a visualizar no Excel.

Um exemplo comum é a informação:

2027-07-01 00:00:00

Para uma pessoa, é fácil identificar que essa informação representa uma data. Porém, para o Excel, dependendo da forma como o conteúdo chegou à planilha, ela pode estar armazenada como texto.

Além disso, quando trabalhamos com arquivos exportados de sistemas, diferentes padrões podem aparecer no mesmo ambiente de trabalho. Criar uma função específica permite padronizar o tratamento.

Outro benefício é a possibilidade de reutilização. Depois de criar a função, você pode utilizá-la em diferentes planilhas do mesmo projeto ou disponibilizá-la de forma global, conforme a estrutura do seu projeto VBA.

Quais formatos serão convertidos?

Neste exemplo, a função foi criada para trabalhar com dois formatos específicos:

  • Tipo 0: formato com ano, mês, dia e horário, como 2027-07-01 00:00:00.

  • Tipo 1: formato com ano, mês e dia separados por barras, como 2027/07/01.

O parâmetro vTipo será utilizado para informar à função qual dos dois formatos está sendo recebido.

Quando o parâmetro não for informado, a função utilizará automaticamente o valor padrão definido no código. Nesse caso, o valor padrão é 0.

Isso permite utilizar a função de uma forma simples quando estamos trabalhando com o formato principal.

Como criar a função de conversão de data

Para incluir uma Função de Conversão de Data no Excel, basta seguir o procedimento utilizado para criar funções próprias globais no VBA.

De forma geral, o processo envolve abrir o Editor do Visual Basic, inserir um módulo e colocar nele o procedimento da função.

Uma função VBA começa com a palavra Function e termina com End Function. Entre esses dois comandos ficam as instruções que determinam como a função deverá trabalhar.

Neste caso, a função foi denominada gfConverteData.

Função de Formatação de Data

O código utilizado para realizar a conversão é o seguinte:

'Função para converter datas em formatos diferentes
'TIPO 0 = 2010-07-01 00:00:00
'TIPO 1 = 2010/07/01
Function gfConverteData(ByVal vData As String, Optional ByVal vTipo As Integer = 0) As Date
  If vTipo = 0 Then
    gfConverteData = Mid(vData, 9, 2) & "/" & Mid(vData, 6, 2) & "/" & Left(vData, 4)
  Else
    gfConverteData = Right(vData, 2) & "/" & Mid(vData, 6, 2) & "/" & Left(vData, 4)
  End If
End Function

O código acima deve ser mantido conforme a estrutura da função. Os exemplos de datas presentes no código original representam o padrão de entrada que a função espera receber.

Entendendo os parâmetros da função

A declaração da função possui duas informações importantes:

vData representa a informação de data que será convertida.

vTipo informa qual formato deverá ser considerado durante a conversão.

O parâmetro vData foi declarado como String. Isso é importante porque estamos tratando a informação de entrada como texto. A função recebe os caracteres, identifica as posições necessárias e reorganiza essas partes para formar a data.

Já o parâmetro vTipo foi declarado como Integer. Ele será utilizado para determinar qual regra deverá ser aplicada.

Existe ainda uma característica interessante na declaração:

Optional ByVal vTipo As Integer = 0

A palavra Optional indica que esse parâmetro não precisa obrigatoriamente ser informado quando a função for chamada.

O valor 0 depois do sinal de igualdade define o valor padrão. Portanto, se você utilizar a função sem informar o segundo argumento, o VBA assumirá automaticamente o tipo 0.

Como funciona o tipo 0

Quando vTipo = 0, a função considera que a informação recebida possui o seguinte padrão:

2027-07-01 00:00:00

Esse formato possui ano, mês e dia, seguidos pelo horário.

O código utiliza a função Mid para extrair partes específicas do texto.

A função Mid permite obter uma quantidade determinada de caracteres começando a partir de uma posição específica.

Como a estrutura da data é conhecida, podemos informar ao VBA exatamente onde estão o dia, o mês e o ano.

Depois de extrair essas partes, a função monta a informação utilizando barras como separadores.

O objetivo é transformar a estrutura textual em uma sequência que represente uma data no padrão utilizado pelo Excel no Brasil.

Como funciona o tipo 1

Quando o parâmetro vTipo recebe o valor 1, a função utiliza outra regra de interpretação.

Nesse caso, o formato considerado é:

2027/07/01

O código utiliza novamente funções de manipulação de texto para identificar as partes da informação.

O ano é obtido utilizando Left, enquanto as demais partes são extraídas utilizando Mid e Right.

A função Left retorna caracteres a partir do início do texto. A função Right trabalha a partir do final. Já a função Mid permite selecionar caracteres a partir de uma posição determinada.

Essas três funções são muito importantes para quem trabalha com tratamento de textos no VBA.

Por que utilizar posições fixas?

Você pode estar se perguntando por que o código utiliza posições específicas em vez de procurar os separadores automaticamente.

A resposta está na estrutura do dado. Quando sabemos que todas as informações possuem exatamente o mesmo padrão, podemos utilizar posições fixas para realizar a conversão.

Por exemplo, se todos os valores seguem exatamente a estrutura ano-mês-dia, sabemos onde o ano termina, onde o mês está localizado e onde começa o dia.

Isso torna o código simples e direto.

Por outro lado, se os dados de origem não tiverem um padrão consistente, essa abordagem precisará ser adaptada. Um valor com formato diferente pode fazer com que as posições utilizadas pelo código não correspondam aos componentes corretos da data.

Por isso, antes de criar uma função de conversão, é importante conhecer a estrutura real dos dados que serão processados.

Material gratuito

Planilha de Controle Financeiro no Excel

Tenha um controle bonito e completo do seu financeiro.

  • Categorias e subcategorias já configuradas
  • Planilhas separadas por tabela (configuração, lançamentos, resumo)
  • Personalize com suas próprias categorias e ícones

Baixe grátis — receba o link no seu e-mail

Como utilizar a função na planilha

Depois que a função estiver inserida em um módulo VBA, podemos utilizá-la na planilha de acordo com o formato dos dados.

Se o conteúdo estiver no formato que utiliza o tipo 0, podemos chamar a função informando apenas a célula que contém o valor.

Por exemplo:

=gfConverteData(A2)

Como o segundo argumento é opcional e possui valor padrão igual a 0, não precisamos informá-lo nesse caso.

Quando precisarmos utilizar o segundo formato, podemos informar o valor 1:

=gfConverteData(A2;1)

Assim, o VBA saberá que deverá aplicar a segunda regra de conversão.

Essa possibilidade de trabalhar com um parâmetro de controle deixa a função mais versátil sem tornar o uso excessivamente complexo.

O que acontece depois da conversão?

Um detalhe importante é observar que a função foi declarada com retorno do tipo Date.

Isso significa que o resultado esperado da função é uma data, e não simplesmente uma sequência de caracteres.

Essa diferença é fundamental.

Se uma data permanecer como texto, algumas operações do Excel podem não funcionar corretamente. Quando o resultado é tratado como uma data, podemos utilizar o valor em operações que dependem de datas, como classificação, filtros e cálculos relacionados a períodos.

Portanto, a função não tem como objetivo apenas mudar a aparência do conteúdo. Ela foi criada para interpretar a informação recebida e devolvê-la como uma data.

Conversão de datas vindas de SQL

Uma das aplicações mais interessantes dessa função é o tratamento de resultados de consultas SQL.

Quando trabalhamos com bancos de dados, é comum que datas sejam retornadas seguindo padrões diferentes do formato normalmente utilizado em uma planilha brasileira.

Se você utiliza Excel em conjunto com Access, SQL ou outros bancos de dados, provavelmente já encontrou situações em que a informação de data precisa ser tratada antes de ser utilizada em relatórios.

Nessas situações, uma função própria pode facilitar bastante o processo.

Em vez de aplicar várias fórmulas auxiliares em colunas diferentes, podemos centralizar a regra em uma única função VBA.

Isso também facilita a manutenção. Se a regra precisar ser alterada posteriormente, podemos modificar a função e manter as fórmulas das planilhas muito mais simples.

Cuidados com formatos de data

Apesar de a função ser simples, existe um ponto que merece bastante atenção: o formato de entrada precisa ser conhecido.

A função foi criada considerando posições específicas dos caracteres. Portanto, se o sistema enviar uma informação diferente, o resultado poderá não ser o esperado.

Por exemplo, um valor que contenha apenas a data e não possua horário pode exigir um tratamento diferente daquele utilizado para uma informação que contenha data e hora.

Da mesma forma, alterações na ordem dos componentes da data podem exigir outra lógica.

Por isso, nunca é uma boa prática assumir que qualquer texto contendo números representa uma data válida para a função. Primeiro, analise alguns exemplos reais dos dados que serão processados.

Como tornar a solução mais robusta

O código apresentado foi desenvolvido com uma proposta objetiva: solucionar uma necessidade específica utilizando uma função curta e fácil de entender.

Em projetos maiores, podemos acrescentar validações para tratar situações diferentes.

Por exemplo, podemos verificar se o valor recebido está vazio, se possui a quantidade esperada de caracteres ou se segue o padrão definido. Também podemos tratar erros quando a informação recebida não representa uma data válida.

Outra possibilidade é ampliar a função para aceitar novos formatos. Em vez de trabalhar somente com dois tipos, poderíamos criar outras regras de conversão de acordo com as fontes dos dados.

Entretanto, é importante não complicar uma solução simples sem necessidade. Se todos os dados recebidos seguem o mesmo padrão, uma função pequena e objetiva pode ser a melhor alternativa.

Função própria ou fórmula do Excel?

Uma dúvida comum é saber quando utilizar VBA e quando utilizar uma fórmula tradicional do Excel.

A resposta depende da situação.

Se o tratamento puder ser realizado facilmente com funções nativas do Excel e não houver necessidade de reutilizar uma lógica complexa, uma fórmula pode ser suficiente.

Por outro lado, quando a mesma regra precisa ser utilizada muitas vezes, especialmente em diferentes planilhas ou projetos, uma função própria pode tornar o trabalho mais organizado.

Também devemos considerar o ambiente em que o arquivo será utilizado. Arquivos com macros precisam ser salvos e utilizados em formatos que preservem o código VBA, e as configurações de segurança do Excel podem influenciar a execução das macros.

Por isso, antes de escolher a solução, avalie a origem dos dados, a frequência do processo, a quantidade de usuários e a necessidade de manutenção.

Uma biblioteca de funções VBA pode economizar muito tempo

Se você trabalha constantemente com Excel e VBA, vale a pena criar sua própria biblioteca de funções.

Ao longo do tempo, você provavelmente encontrará situações que se repetem: conversão de datas, valores por extenso, limpeza de textos, tratamento de caracteres, validações, cálculos específicos e outras rotinas.

Em vez de recriar cada solução do zero, podemos armazenar essas funções em módulos organizados e reutilizá-las quando necessário.

Essa é uma das grandes vantagens de aprender VBA de maneira estruturada. Você não aprende apenas a resolver o problema atual. Você passa a construir ferramentas que poderão ser utilizadas novamente.

Conclusão

Neste artigo, criamos uma Função de Conversão de Data no Excel utilizando VBA para tratar informações recebidas em formatos diferentes.

A função foi desenvolvida para trabalhar com dois padrões de entrada e utiliza o parâmetro vTipo para definir qual regra deverá ser aplicada.

Também vimos como os recursos Left, Mid e Right podem ser utilizados para extrair partes específicas de uma informação textual.

O exemplo é simples, mas apresenta um conceito importante: podemos criar nossas próprias funções para resolver problemas que aparecem repetidamente no dia a dia.

Quando trabalhamos com dados provenientes de SQL, arquivos de texto ou outros sistemas, esse tipo de função pode ser muito útil para padronizar as informações antes de utilizá-las nos relatórios.

O mais importante é entender a estrutura do dado de origem. A função apresentada utiliza posições específicas porque os formatos analisados possuem uma estrutura conhecida. Se a origem dos dados mudar, o código também deverá ser adaptado.

Se você está começando a trabalhar com VBA, recomendo estudar esse exemplo linha por linha. Entender como os argumentos são recebidos, como o código identifica cada parte da informação e como o resultado é devolvido é muito mais importante do que simplesmente copiar a função.

A partir desse conceito, você poderá criar suas próprias funções e montar uma biblioteca de soluções reutilizáveis para os seus projetos em Excel.

Esse é um dos caminhos para sair do uso básico de fórmulas e começar a transformar o Excel em uma ferramenta realmente personalizada para as suas necessidades.

Este conteúdo foi útil?

Continue lendo