Comment transformer une liste de données en table de référence dans Excel?


2

Dans Excel, j'ai les éléments suivants (csv like extract):

groupname  origin    destination  speed winner
client1    paris    newyork      100 bob
client1    paris    tokyo        200 joe
client1    paris    london       100 
client1    tokyo    paris        213 kok
client1    tokyo    newyork      234 lok
client1    newyork  paris        233

Comment puis-je transformer ce qui précède dans cette table de vitesse pour Client1?

         paris    newyork    london    tokyo
paris             100, bob        100       200, joe
newyork  233
london
tokyo    213, kok      234, lok

Je ne sais pas comment appeler cela, mais cela ressemble beaucoup aux tableaux de distance des anciennes cartes.

Parce que je veux signaler la valeur dans mon tableau de résultats, je ne suis pas sûr que le tableau croisé dynamique soit la bonne option. Merci!


Ma réaction immédiate à ce problème est qu’il pourrait être résolu avec VBA. Avez-vous envisagé d'utiliser VBA?
Dan Smith

Comme vous l'avez deviné, je suis plutôt bon avec Excel et je suis avec VBA.
KitKatNeko

Réponses:


0

Je résoudrais cela avec le complément Power Query. Il faut quelques étapes pour y arriver et un peu de codage dans le langage Power Query (M) pour appeler la fonction Table.Pivot (elle n’est pas exposée dans l’interface utilisateur de Power Query).

J'ai construit un prototype que vous pouvez visualiser ou télécharger - sa "Démo Power Query - Pivoter les lignes dans columns.xlsx" dans mon One Drive:

https://onedrive.live.com/redir?resid=4FA287BBC10EC562%21398

Ma technique consistait essentiellement à ajouter une colonne calculée pour combiner la vitesse et le gagnant (par exemple, 100, bob), et à supprimer les colonnes originales de la vitesse et du gagnant. Ensuite, j'ai utilisé la fonction Table.Pivot pour générer une colonne pour chaque valeur unique dans la colonne de destination.

La documentation de Table.Pivot est ici:

http://office.microsoft.com/en-au/excel-help/table-pivot-HA104111995.aspx?CTT=5&origin=HA104122363

Un autre exemple d'utilisation de Table.Pivot est ici:

http://cwebbbi.wordpress.com/2013/11/25/pivoting-data-in-power-query/


C’est génial, je ne connaissais pas PowerQuery existant sur Excel. Je m'assurerai de l'utiliser encore plus à l'avenir!
KitKatNeko

C'est assez nouveau, mais j'en suis très impressionné jusqu'à présent. Ils ont trouvé un équilibre élégant entre les magiciens faciles et le pouvoir de codage.
Mike Honey

La dernière version de Power Query expose maintenant la commande Table.Pivot sous forme de bouton. Je viens de mettre à jour mon fichier de démonstration pour l'utiliser.
Mike Honey

0

Vous pouvez le faire très rapidement avec un tableau croisé dynamique. Il suffit de sélectionner toutes vos données (en-têtes de colonne inclus) et de cliquer Pivot Tablesur le Insertruban. Une fois que vous avez sélectionné un emplacement pour votre tableau croisé dynamique, il vous suffit de faire glisser vos champs dans la liste des champs du tableau croisé dynamique comme suit:

Report Filter: groupname
Row Labels: origin
Column Labels: destination
Values: speed ('Sum of' is what you want)

Et c'est à peu près le fait. Il vous suffit de sélectionner client1votre filtre de rapport situé au-dessus du tableau croisé dynamique.

entrez la description de l'image ici

Vous pouvez également modifier les paramètres du tableau croisé dynamique de sorte que la ligne et la colonne Grand totaux ne soient pas affichées.


C'est excellent pour les valeurs numériques, mais comment peut-on le faire pour la valeur de chaîne?
KitKatNeko
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.