locked
Juntar o conteúdo de várias colunas em apenas uma RRS feed

  • Pergunta

  • Boa noite Pessoal, tudo bem?

    Gostaria de ajuda com uma macro.

    Imaginem que tenho uma palavra em cada célula, tanto em várias linhas, quanto em várias colunas.
    Preciso de um VBA que junto todas as palavras da planilha, em apenas UMA coluna, no caso seria a coluna A.
    Preciso que a macro pegue SE TIVER, o conteúdo da coluna B e coloque diretamente abaixo da ultima palavra da coluna A, depois que pegue o conteúo da coluna C, e coloque diretamente abaixo da última palavra da coluna A, que agora seria A+B, e assim por diante.

    O ponto mais importante, é que pode haver células em branco entre as célular de uma coluna, de forma que pode acontecer:
    B1 = Mariana
    B2 = VAZIO
    B3 = Lucas
    B4 = Michel
    B5 = VAZIO
    B6 = Patrícia

    Não existe sempre um padrão, então pode ser que haja conteúdo da coluna A até a D, ou pode ser que haja conteúdo da coluna A até a BZ e assim por diante.

    Muito complicado? Se ficar alguma dúvida me avisem. Abraços e Obrigado.

    quinta-feira, 25 de novembro de 2010 01:58

Todas as Respostas

  • Fala,

    Só pra esclarecer.

    A coluna "A" vai estar vazia de início?

    Se não estiver vazia, poderá conter espaços entre as linhas?

    Se tiver espaços, esses espaçao serão preenchidos como? Com o conteúdo das outras colunas no meio, ou com o conteúdo da própria coluna A que vai "subir" pra ocupar o espaço? Ou vai continuar com os espaços?

     

    Alexandre

    quinta-feira, 25 de novembro de 2010 13:15
  • Olá Alexandre, tudo bem? Obrigado pela ajuda.

    Você fazendo a pergunta, acho que seira melhor se a coluna "A" estiver vazia de início sim. Todo o conteúdo estará a partir da coluna "B" em diante.

    No caso das linhas vazias, a idéia é eliminar todas as linhas vazias, seja subindo o conteúdo de cada linha como você disse, seja classificando o conteúdo, qualquer maneira que você julgar mais fácil.

    Abraços e Obrigado, Leandro.

     

    quinta-feira, 25 de novembro de 2010 18:05
  • Sub ConcatenaColunas()
      
      Dim cel As Range
      Dim col As Range
      Dim r As Long
      Dim c As Long
      
      With ActiveSheet
        c = .UsedRange.Columns.Count + 1
        For Each col In .UsedRange.Columns
          For Each cel In col.Cells
            If cel <> vbNullString Then
              r = r + 1
              Cells(r, c) = cel
            End If
          Next cel
        Next col
        .Columns(c).Cut
        Columns("A").Insert Shift:=xlToRight
      End With
    End Sub

    http://www.ambienteoffice.com.br
    quinta-feira, 25 de novembro de 2010 22:15
  • Felipe,

    A ação funcinou perfeitamente. Só que me ocorreu um problema.

    Nem sempre sou eu que escrevo os valores nas células diretamente, as vezes acontece de eu precisar copiar o texto da web por exemplo. Quando faço isso (copio um texto da web) e colo no excel, podem vir textos que tem a primeira letra como sinais de conta como por exemplo "+LCD". Quando isso acontece, o excel automaticamente entende esse valor como uma conta, e adiciona um "=" na frente, deixando como "=+LCD" e me dando um valor de erro. Nesse caso o valor de erro apareceu "#NOME?". A solução fazendo a mão, seria substituir o "=" por uma aspas simples ' ou adicionar essa aspa simples ' antes do "=". Teria como substituir ou adicionar isso automaticamente? Algo como uma checagem para ver se existe células com valor de erro, e se houver, adicionar uma aspas simples no início? Porque ao rodar a macro, se existe células com erro, o código trava e só agrupa as células até a última antes da célula com erro.

    Agradeço o funcionamento do código. Funcionou do jeito que eu queria.

    Abraços, Leandro.

    sexta-feira, 26 de novembro de 2010 00:24
  • Felipe,

    Resolvi o problema do erro usando o código abaixo:

    Cells.Replace What:="=", Replacement:="'", LookAt:=xlPart, SearchOrder _
      :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False

    É isso mesmo?

    Abraços, Leandro.

    sexta-feira, 26 de novembro de 2010 01:44
  • Tenho uma alternativa.

    Selecione todas as células da Planilha, clicando no botão que está acima da linha 1 e à esquerda da coluna A. No menu Início, grupo Número, selecione Texto na Caixa de Combinação. Tente importar os dados novamente.


    http://www.ambienteoffice.com.br
    sexta-feira, 26 de novembro de 2010 10:03
  • Fala Leandro,

    Como o Felipe já mandou a resposta, deixo a minha pra próxima pergunta :)

    Alexandre

    sexta-feira, 26 de novembro de 2010 12:59