Dividir texto entre colunas usando funções – função Split Excel VBA

Somar valores por mês Excel. Função SOMARPRODUTO Excel.
Somar valores por mês Excel. Função SOMARPRODUTO Excel.
28 de dezembro de 2014
Usar fórmulas/funções Excel no VBA
Usar fórmulas/funções Excel no VBA
5 de janeiro de 2015

Objetivo: Dividir texto entre colunas usando funções – função Split Excel VBA.

fnSplit Excel VBA

Esta função realiza algo semelhante a função Split no VBA, vou explicar melhor, você tem uma coluna com texto separado por um caracter especial do tipo ; ou / por exemplo, há uma forma de fazer com que estes dados sejam separados em colunas utilizando métodos do Excel, mas nem sempre você precisa ou quer fazer com que esta lista simplesmente seja separada, ás vezes você só quer colar estes dados em uma coluna e retornar determinada coluna que seria separada em outra. É o caso que resolve esta função.

Na coluna A do nosso exemplo coloquei uma lista a partir de um relatório TXT que pode ter sido emitido pelo sistema gerencial de uma empresa:

Esta lista foi colocada na coluna A e é separada pelo caracter ; como pode ser reparado na imagem.

Desta forma foi criada a seguinte função VBA Excel:

Esta função possui as seguintes características:

Nome: fnSplit
Objetivo: Separar o conteúdo de uma célula a partir de seus delimitadores e retornar a coluna desejada.
lTexto: Célula com os dados de origem.
lEncontrar: Identificador especial que servirá para definir o limite entre as colunas.
lPosicao: Coluna que deverá ser retornada na função.
Exemplo: =fnSplit($A1;”|”;0)

Para utilizar esta função você primeiro deve incluí-la na sua lista de funções próprias globais, veja como neste artigo: http://guiadoexcel.com.br/habilitando-a-guia-desenvolvedor-e-copiando-procedimentos-vba-sub-da-internet desta forma a função estará sempre disponível no seu Excel.

Código fonte:

Public Function fnSplit(ByVal lTexto As String, ByVal lDelimitador As String, ByVal lPosicao As Long) As String
    Dim lSplit As Variant
    
    Application.Volatile
    
    lSplit = Split(lTexto, lDelimitador)
    
    fnSplit = lSplit(lPosicao)
End Function

Download-button

Abraço

Marcos Rieper

6 Comments

  1. Danniel disse:

    Ótima função. Me ajudou muito. Obrigado!

  2. Felipe disse:

    Parabéns Marcos. Grande ajuda. Obrigado!

  3. Esron Pedroso disse:

    Boa tarde!

    Preciso adaptar este modelo para o seguinte caso:

    O relatório exportado para o Excel é separado por “;” e sempre fixado na coluna “A”, porém seus dados diários podem variar o número de linhas mas não o de colunas.

    Alguém pode ajudar?

    Abraço!

  4. ALAERCIO MARTINS JUNIOR disse:

    Boa noite, muito bom gostei
    como eu faço pra alterar ao invés de colocar os dados na mesma coluna seria na mesma linha linha ?
    Obrigado

Deixe uma resposta

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

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.

Inscreva-se no nosso canal do Youtube!


Junte-se ao nosso canal do Youtube. Começamos em abril de 2016, mas já temos mais de 06:00 h de treinamentos gratuitos e este número irá aumentar. Vídeos novos todos os sábados.