J'ai des données qui ressemblent à ceci:
Id | Loc1 | Loc2 | Loc3 | Loc4
---+------+------+------+-----
1 | NY | CA | TX | IL
2 | WA | OR | NH | RI
Et je veux le convertir en ceci:
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
Quelle est la façon la plus simple de procéder dans Excel 2007?
Réponses:
Vous pouvez le faire avec un tableau croisé dynamique.
Vous devriez voir une nouvelle feuille contenant toutes les données de votre tableau croisé dynamique, transposée dans le sens que vous recherchez.
Les technologies Datapig fournissent des instructions pas à pas qui sont en réalité plus compliquées que nécessaire - son exemple transpose une partie seulement du jeu de données et utilise la technique de pivot combinée à TextToColumns . Mais il y a beaucoup de photos.
Notez qu'un tableau croisé dynamique regroupera les données. Si vous voulez le dissocier, la seule façon de le faire est de copier le tableau croisé dynamique et de "coller spécial" en tant que valeurs. Vous pouvez ensuite remplir les blancs avec une technique comme celle-ci: http://www.contextures.com/xlDataEntry02.html
la source
Si vos données ne sont pas un tableau croisé dynamique Excel, mais uniquement des données, vous pouvez les "dé-pivoter" avec un code VBA simple. Le code dépend de deux plages nommées, Source et Target. La source représente les données que vous souhaitez dé-pivoter (à l'exclusion des en-têtes de colonne / ligne, par exemple, NY-RI dans l'exemple) et Target est la première cellule dans laquelle vous souhaitez placer votre résultat.
la source
J'ai construit un complément qui vous permettra de le faire et qui vous permettra de vous adapter facilement à différentes situations. Découvrez-le ici: http://tduhameau.wordpress.com/2012/09/24/the-unpivot-add-in/
la source
Il y a une très bonne solution dans Excel 2010, il suffit de jouer un peu avec le tableau croisé dynamique.
Créez un tableau croisé dynamique à partir de vos données avec ces paramètres:
la source
Le mieux que j'ai trouvé jusqu'ici est ceci:
Cela fonctionne, mais je dois générer les ID et LocNum manuellement. S'il existe une solution plus automatisée (à part l'écriture d'une macro), merci de me le faire savoir dans une réponse séparée.
la source
Si les dimensions de vos données sont identiques à celles de l'exemple fourni dans votre question, l'ensemble de formules suivant utilisant OFFSET devrait vous donner le résultat souhaité:
En supposant
sont dans la plage A2: E3, puis entrez
en F2, par exemple, et
dans G2, par exemple, et
dans H2, disons.
Copiez ensuite ces formules autant que nécessaire.
C’est la solution la plus simple, pure et intégrée à laquelle je puisse penser.
la source
Vous semblez avoir obtenu la colonne "loc" (comme en témoigne votre première réponse), et vous avez maintenant besoin d'aide pour obtenir les deux autres colonnes.
Votre première option consiste simplement à taper les premières (disons 12) premières lignes dans ces colonnes et à les faire glisser vers le bas - je pense qu'Excel fait la bonne chose dans ce cas (je n'ai pas Excel sur cet ordinateur pour le tester à coup sûr).
Si cela ne fonctionne pas, ou si vous voulez quelque chose de plus programmeur-y, essayez d'utiliser la fonction row (). Quelque chose comme "= Floor (row () / 4)" pour la colonne ID et "= mod (row (), 4) +1" pour la colonne LocNum.
la source
Il existe un utilitaire de conversion paramétrique VBA permettant de retourner des données pivotées ou non pivotées dans une table de base de données. Pour plus d'informations, reportez-vous à la section
http://www.spreadsheet1.com/unpivot-data.html
la source
Voici un bon outil pour décompresser, normaliser un tableau croisé dynamique.
Normalisieren von Pivot Tabellen
J'espère que ça aide.
la source
@DaveParillo answer est la meilleure réponse pour un seul tableau à onglets. Je voulais ajouter quelques extras ici.
Pour plusieurs colonnes avant les colonnes sans pivot
Cette méthode ne fonctionne pas.
Youtube données simples non pivotées comme la question
Ceci est une vidéo youtube montrant comment le faire de manière simple. J'ai ignoré la partie sur l'ajout du raccourci et utilisé le raccourci @devuxer qui est dans DaveParillo answer.
https://www.youtube.com/watch?v=pUXJLzqlEPk
la source
C'est beaucoup plus simple que ça. Cliquez simplement sur l'option "Transposer" dans "Coller spécial ..." pour obtenir la transposition que vous demandez.
la source