
Tenho uma planilha na qual estou trabalhando. Dentro desta folha há duas colunas. A coluna A é o identificador exclusivo e a coluna B possui números de identificação. Um identificador pode ter até 1 ou 5 IDs. O que preciso fazer é mover todos os IDs para uma linha, mantendo o identificador que anexei na imagem antes e depois.
Tenho certeza de que existe alguma fórmula que pode fazer isso, espero que você possa ajudar.
Antes
Depois
Responder1
Coloque esta macro em um módulo padrão e execute-a:
Sub Macro1()
Dim i As Long, j As Long, k As Long, Na As Long
Dim v As String, Nc As Long
Columns("A:A").Copy Columns("C:C")
ActiveSheet.Range("C:C").RemoveDuplicates Columns:=1, Header:=xlYes
Na = Cells(Rows.Count, "A").End(xlUp).Row
Nc = Cells(Rows.Count, "C").End(xlUp).Row
For i = 2 To Nc
k = 4
v = Cells(i, "C").Value
For j = 2 To Na
If v = Cells(j, 1).Value Then
Cells(i, k) = Cells(j, 2).Value
k = k + 1
End If
Next j
Next i
End Sub
Aqui está um exemplo de saída:
Como você pode ver, assumimos que as entradas estão em colunasAeB. As saídas vão nas colunas próximas a elas. O código não se importa se os dados estão classificados ou não.
Responder2
Faço isso de vez em quando, mas sem VBA e em algumas etapas:
1) primeiro classifique os dados por ID para que sejam agrupados
2) então, em C2: =if(A1=A2,if(A2=A3,B1&","&B2, "Last,"&B1&","&B2),B2)
3) analise isso
4) copie e cole a coluna C como valores (digamos apenas na coluna D) para se livrar da fórmula
5) classifique pela coluna D, exclua tudo que não diz "último"
6) selecione coluna D, guia Dados > Texto para colunas > delimitado > selecione vírgulas > OK
Agora tudo está dividido em colunas exclusivas e na mesma linha do ID. Você pode excluir as colunas B e C, pois elas não são mais necessárias