Ocultar Planilhas e Barra de Rolagem
Ocultar Planilhas e Barra de Rolagem
14 de fevereiro de 2011
Painel Contas a Pagar com Filtro Avançado e VBA
Controle de contas a pagar no Excel
17 de fevereiro de 2011

Objetivo: Demonstrar função global criada em VBA para resolver uma restrição da função Concatenar do Excel.

A função Concatenar do Excel é uma das principais funções de texto do Excel, a sua função é de concatenar valores em uma célula. No entanto esta função tem uma restrição chata, ela não permite que você selecione diversas células de uma só vez para realizar a concatenação.

Desta forma criei uma função em VBA que resolve este problema, você poderá selecionar diretamente um intervalo de células que será separado por um delimitador definido também na própria fórmula, ganhando assim um bom tempo.

A função funciona da seguinte forma:

  • gfConcatenar(Intervalo; Delimitador) -> Função que une um intervalo de células separando as informações concatenadas por um delimitador.

Sendo:

  1. Intervalo: intervalo de células a serem concatenadas
  2. Delimitador: separador dos dados das células
  3. Exemplo: =gfConcatenar(A2:A18;”-“)

Para usar a função você deve implementar a função abaixo conforme o artigo http://guiadoexcel.com.br/criando-funcoes-proprias-globais.

Código:

'Função que concatena dados de um range
'lRange = Intervalo de dados a concatenar
'lSeparador = String de separador definido pelo usuário
Public Function gfConcatenar(ByVal lRange As Range, Optional ByVal lSeparador As String) As String
    Application.Volatile

    Dim lCel As Range

    If lRange Is Nothing Then
        gfConcatenar = ""
    Else
        For Each lCel In lRange
            If lCel.Value  "" Then
                If gfConcatenar = "" Then
                    gfConcatenar = CStr(lCel.Value)
                Else
                    gfConcatenar = gfConcatenar + lSeparador + CStr(lCel.Value)
                End If
            End If
        Next lCel
    End If
End Function

Até a próxima

Marcos Rieper


Clique aqui e leia mais sobre Excel VBA. https://www.guiadoexcel.com.br/vba/ O Guia do Excel foi criado por Marcos Rieper e oferece artigos, dicas, tutoriais e modelos de planilhas prontas. Aqui você encontra tudo sobre Excel, seja de nível básico, intermediário,  avançado e VBA. O Guia do Excel oferece diversos materiais completamente gratuitos para download. Navegue em nosso site e confira! Conheça também a nossa Loja do Excel https://loja.guiadoexcel.com.br/
Cursos

Curso Excel Completo – Curso Excel Básico + Curso Excel Avançado – Acesso Vitalício

R$218,00 R$179,00

COMPRAR
Cursos

Curso Excel Master – Curso Excel Básico + Curso Excel Avançado + Curso VBA Excel + LP – Acesso Vitalício

R$357,00 R$249,00

COMPRAR
Cursos

Curso Excel PRO – Curso Excel Avançado + Curso VBA Excel + Lógica de programação – Acesso Vitalício

R$258,00 R$199,00

COMPRAR
Cursos

Curso Excel Web – Curso VBA Excel + Lógica de programação + Curso Web Scraping VBA- Acesso Vitalício

R$388,90 R$309,00

COMPRAR

11 Comentários

  1. Tobias Comim disse:

    Marcos,

    preciso de uma ajuda para concatenar dados de diversas planilhas.
    Preciso pegar, por exemplo, o range da plan2, b3 até ultima linha preenchida, e o range da plan1, z3 até ultima preenchida.
    Tem alguma ideia de como fazer? Tentei usando for, porém ele copia todos os dados da plan2, para depois passar para a plan1. Preciso que ele gere em sequencia..
    Caso queria, posso encaminhar a planilha para olhares.

    Abraço.

    • Marcos Rieper disse:

      Boa tarde Tobias,

      Para fazer isso você pode utilizar a função explicada neste post para cada uma das planilhas e depois usar um & para juntar as duas informações. Baixe o download deste post para dar uma olhada.

      Abraço

      Marcos Rieper

  2. Tobias Comim disse:

    Ficaria então:
    dim a as range
    dim b as range

    Worksheets(“Plan1”).Activate

    a = Range(“b3:b50”)
    gfConcatenar(a)

    Worksheets(“Plan2”).Activate
    b = Range (“”z3:z50)
    gfConcatenar(b)

    msgbox (a & b)
    ??

  3. Tobias Comim disse:

    Marcos,

    consegui resolver a minha questão, um pouco de dor de cabeça mas deu certo.
    Obrigado.

  4. Wilson disse:

    Não consegui implementar a função concatenar. alguém pode me ajudar? o que faço primeiro….

  5. Rogério disse:

    Pessoal, olá. Sei que o tópico é antigo, mas não encontrei uma maneira certa de postar dúvidas aqui. Bem, estou com a seguinte dúvida: tenho 3 linhas que variam a quantidade de dezenas e preciso juntá-las numa linha só (como se fosse concatenar, mas um número em cada célula). Chamei as linhas por letras para facilitar o entendimento. Uso Excel 2010 em português.
    Ex.:
    linha A: 1 2 3 4
    linha B: 5 6 7 8
    linha C: 9 10 11 12
    linha D (resultante): 1 2 3 4 5 6 7 8 9 10 11 12
    O problema é quando a quantidade de dezenas varia em cada linha:
    linha A: 1 2 3 4 5
    linha B: 6 7 8 9
    linha C: 10 11 12
    linha D (resultante): 1 2 3 4 5 6 7 8 9 10 11 12
    São 12 células. Se eu colocar em sequência de 4 dezenas, algumas células podem ficar preenchidas ou vazias. Já quebrei a cabeça, mas não consigo pôr em sequência com as células todas preenchidas na linha D. Agradeço por sua atenção. Rogério

    • Marcos Rieper disse:

      Bom dia Rogério,

      Obrigado pelo seu contato.

      Para fazer isso utilize o operador & e também faça uso do Arrumar:

      =ARRUMAR(A1&” “&B1&” “&C1&” “&D1)

      A função arrumar retirará os espaços em branco ao final, faça para cada linha, e no final utilize a fórmula abaixo para unir as informações das linhas 1, 2 e 3.

      =E1&E2&E3

      Abraço

      Marcos Rieper

  6. fabio disse:

    Olá. Achei excelente a fórmula, a estou usando bastante.

    Há alguma maneira de usar essa função segundo uma condicional? Como um SumIf?

    Sou programador experiente, porém iniciante em VBA, peco muito em sintaxes, então se vc puder me ajudar, ficarei muito grato.

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.