73 votes

Comment "dépivoter" ou "inverser le pivot" dans Excel ?

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

Quel est le moyen le plus simple de faire cela dans Excel 2007 ?

2voto

Aaa Points 256

Si les dimensions de vos données sont celles de l'échantillon fourni dans votre question, alors la série de formules suivantes utilisant OFFSET devrait vous donner le résultat souhaité :

En supposant que

1 | NY | CA | TX | IL

2 | WA | OR | NH | RI

sont dans la plage A2:E3, puis entrez

\=OFFSET($A$2,FLOOR((ROW(A2)-ROW($A$2))/4,1),0)

dans F2, disons, et

\=MOD(ROW(A2)-ROW($A$2),4)+1

en G2, disons, et

\=OFFSET($B$2,FLOOR((ROW(B2)-ROW($B$2))/4,1),MOD(ROW(A2)-ROW($A$2),4))

en H2, disons.

Recopiez ensuite ces formules dans la mesure où cela est nécessaire.

C'est la solution la plus simple, la plus pure, la plus intégrée que je puisse imaginer.

1voto

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 est de taper simplement les premières lignes (disons 12) dans ces colonnes et de 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 avec certitude).

Si cela ne fonctionne pas, ou si vous voulez quelque chose de plus programmatique, 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.

1voto

Petros Points 11

Il existe un utilitaire de conversion VBA paramétrique pour dépivoter ou inverser les données pivotées vers une table de base de données.

http://www.spreadsheet1.com/unpivot-data.html

1voto

RemiX Points 450

Voici un bel outil pour dépivoter, normaliser un tableau croisé dynamique.

Normalisation des tableaux de pivotement

J'espère que cela vous aidera.

1voto

BrinkDaDrink Points 151

La réponse de @DaveParillo est la meilleure réponse pour un tableau à onglet unique. Je voulais ajouter quelques éléments supplémentaires ici.

Pour les colonnes multiples, précédez les colonnes de dépivotement.

Cette méthode ne fonctionne pas.

Youtube unpivot de données simples comme la question

Voici une vidéo youtube montrant comment le faire de manière simple. J'ai sauté la partie concernant l'ajout du raccourci et utilisé le raccourci @devuxer qui se trouve dans la réponse de DaveParillo.

https://www.youtube.com/watch?v=pUXJLzqlEPk

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X