A seguinte planilha Excel deve ser reorganizada
de
ID Name1 Name2 Name3
1 Alf Bert Fritz
2 Curt
3 Otto Mike
4 Sue Zack
para
ID Name
1 Alf
1 Bert
1 Fritz
2 Curt
3 Otto
3 Mike
4 Sue
4 Zack
Estou faltando o termo de pesquisa correto, acho que é bastante comum, mas simplesmente não consigo descrevê-lo corretamente.
Responder1
Experimente este código. É autoexplicativo em virtude de trabalhar passo a passo. Seus dados de entrada começam em A1 e sua saída começa em A8. Isso pode ser alterado.
É claro que um código mais curto é possível, e acho que uma fórmula de matriz também pode ser montada.
Sub single_col()
Dim icell As Integer
Dim irow As Integer, icol As Integer
Dim nrows As Integer, ncols As Integer
Dim rng_all As Range, rng_curr As Range, rng_trg As Range
Set rng_all = Range("A2:D5")
Set rng_trg = Range("A8")
nrows = rng_all.Rows.Count
icell = 0
For irow = 1 To nrows
Set rng_curr = rng_all.Rows(irow)
ncols = WorksheetFunction.CountA(rng_curr)
For icol = 2 To ncols
icell = icell + 1
Dim name As String
name = rng_curr.Cells(1, icol).Text
rng_trg.Value = rng_curr.Cells(1, 1).Text
rng_trg.Offset(0, 1).Value = name
Set rng_trg = rng_trg.Offset(1, 0)
Next icol
Next irow
End Sub
PS: o código acima já inclui a modificação sugerida no comentário.
Responder2
Você tem um layout de tabela dinâmica que deseja "desdinamizar". Esseartigode Jon Walkenbach mostra o que você pode fazer com apenas algumas teclas e nenhum código VBA é necessário.
Para sua situação específica, aqui está o que eu faria.
1.Abra o menu da tabela dinâmica "antiga" usando Alt + D, P. Você obterá uma caixa de diálogo como a mostrada abaixo. Escolha a opção “Vários intervalos de consolidação” e clique em “Avançar”.
2.No próximo passo escolha “Vou criar os campos da página”; clique em "Avançar".
3. Destaque seu intervalo de células para que seja definido na parte superior da caixa de diálogo e clique no botão “Adicionar” para copiar esse intervalo para a lista “Todos os intervalos”. Clique em "Avançar".
4.Escolha uma célula fora dos seus dados. Aqui você vê que escolhi F3 na mesma planilha. (Você pode escolher uma planilha diferente, se desejar.) Clique em “Concluir”.
5.Você obterá uma tabela dinâmica como esta. Na caixa de diálogo, desmarque as caixas de seleção "Linha" e "Coluna".
6.Isso fornece uma tabela dinâmica de uma célula.
7.Você clicará duas vezes em uma célula e, em uma nova planilha, obterá seus dados "não dinâmicos" como uma nova tabela:
Com os dados da tabela, agora você pode filtrar a coluna C para mostrar os que não estão em branco e pode excluir a coluna B e terá o layout desejado.