Transforme o layout da mesa horizontal em mesa vertical

Transforme o layout da mesa horizontal em mesa vertical

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”.

insira a descrição da imagem aqui

2.No próximo passo escolha “Vou criar os campos da página”; clique em "Avançar".

insira a descrição da imagem aqui

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".

insira a descrição da imagem aqui

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”.

insira a descrição da imagem aqui

5.Você obterá uma tabela dinâmica como esta. Na caixa de diálogo, desmarque as caixas de seleção "Linha" e "Coluna".

insira a descrição da imagem aqui

6.Isso fornece uma tabela dinâmica de uma célula.

insira a descrição da imagem aqui

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:

insira a descrição da imagem aqui

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.

informação relacionada