Eu tenho dados parecidos com este:
Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1 | NY | CA | TX | IL
2 | WA | OR | NH | RI
E eu quero convertê-lo para isso:
Id | LocNum | Loc
---+--------+----
1 | 1 | NY
1 | 2 | CA
1 | 3 | TX
1 | 4 | IL
2 | 1 | WA
2 | 2 | OR
2 | 3 | NH
2 | 4 | RI
Qual é a maneira mais fácil de fazer isso no Excel 2007?
Respostas:
Você pode fazer isso com uma tabela dinâmica.
Você deverá ver uma nova planilha contendo todos os dados em sua tabela dinâmica, transpostos da maneira que procura.
As tecnologias Datapig fornecem instruções passo a passo que são realmente mais complicadas do que você precisa - o exemplo dele transpõe apenas parte do conjunto de dados e usa a técnica de pivô combinada com TextToColumns . Mas tem muitas fotos.
Observe que uma tabela dinâmica agrupará os dados. Se você quiser desagrupar, a única maneira de fazer isso é copiar a tabela dinâmica e "colar especial" como valores. Você pode preencher os espaços em branco com uma técnica como esta: http://www.contextures.com/xlDataEntry02.html
fonte
Se seus dados não forem uma Tabela Dinâmica do Excel, mas apenas dados, convém "desivocitá-los" com algum código VBA simples. O código depende de dois intervalos nomeados, Origem e Destino. Origem são os dados que você deseja desarticular (excluindo os cabeçalhos de coluna / linha, por exemplo, NY-RI na amostra) e Target é a primeira célula em que você deseja colocar o resultado.
fonte
Criei um complemento que permitirá fazer isso e facilita a adaptação a diferentes situações. Confira aqui: http://tduhameau.wordpress.com/2012/09/24/the-unpivot-add-in/
fonte
Há uma solução bastante interessante no excel 2010, só é necessário jogar um pouco com a tabela dinâmica.
Crie uma tabela dinâmica a partir dos seus dados com estas configurações:
fonte
O melhor que eu vim até agora é o seguinte:
Isso funciona, mas eu tenho que gerar os IDs e LocNum's manualmente. Se houver uma solução mais automatizada (além de escrever uma macro), informe-me em uma resposta separada.
fonte
Se as dimensões dos seus dados forem as da amostra fornecida na sua pergunta, o seguinte conjunto de fórmulas usando OFFSET deverá fornecer o resultado necessário:
Assumindo
estão no intervalo A2: E3 e digite
em F2, digamos, e
no G2, digamos, e
em H2, digamos.
Em seguida, copie essas fórmulas o quanto for necessário.
Esta é a solução de fórmula mais fácil, pura e integrada em que consigo pensar.
fonte
Você parece ter recebido a coluna "loc" (evidenciada pela sua primeira resposta) e agora precisa de ajuda para obter as outras duas colunas.
Sua primeira opção é simplesmente digitar as primeiras (digamos, 12) linhas nessas colunas e arrastar para baixo - acho que o Excel faz a coisa certa neste caso (não tenho excel neste computador para testá-lo com certeza).
Se isso não funcionar, ou se você quiser algo mais programador, tente usar a função row (). Algo como "= Piso (linha () / 4)" para a coluna ID e "= mod (linha (), 4) +1" para a coluna LocNum).
fonte
Existe um utilitário de conversão VBA paramétrico para dinamizar ou reverter dados dinâmicos de volta para uma tabela de banco de dados, consulte
http://www.spreadsheet1.com/unpivot-data.html
fonte
Aqui está uma boa ferramenta para remover a dinâmica, normalizar uma tabela dinâmica.
Normalisieren von Pivot Tabellen
Espero que ajude.
fonte
A resposta @DaveParillo é a melhor resposta para uma única tabela de guias. Eu queria adicionar alguns extras aqui.
Para Várias colunas antes das colunas não dinâmicas
Este método não funciona.
Youtube desvia dados simples como a pergunta
Este é um vídeo do youtube mostrando como fazê-lo de maneira simples. Eu pulei a parte sobre a adição do atalho e usei o atalho @devuxer que está na resposta DaveParillo.
https://www.youtube.com/watch?v=pUXJLzqlEPk
fonte
É muito simples que isso. Basta clicar na opção "Transpor" em "Colar especial ..." para obter a transposição que você está solicitando.
fonte