0
votes

Convertissez des lignes en colonnes dans la requête d'alimentation. Les méthodes de transposition et de pivotement ne donnent pas de résultats corrects

J'ai une table PowerQuery appelée "ON HOLDS" dans Excel comme ci-dessous: xxx pré>

Je cherche à le convertir pour ressembler à ceci (il y aura des en-têtes de colonne , mais je ne suis pas dérangé ce qu'ils sont): strong> p> xxx pré>

J'ai une table séparée ( TeamMembers em>) qui répertorie l'employé unique noms que j'ai essayé de rejoindre pour créer cette liste mais finalement finalement avec des versions similaires à la table d'origine. P>

Je pourrais le faire avec VBA ou une série de formule transposée en dehors de la puissancequery mais que vous sentez cette intention T La meilleure façon de faire - la formule aurait besoin de la mise à jour de chaque semaine pour prendre en compte les différents numéros de lignes. P>

Toute aide serait grandement appréciée. p>


Une transposition de base ne fonctionne pas car elle finit comme ça: P>

| Employee A | Employee B | Employee C | Employee D |
|------------|------------|------------|------------|
| 1          | 3          | 5          | 3          |  


0 commentaires

3 Réponses :


2
votes

L'astuce globale consiste à obtenir une nouvelle colonne avec comptage cumulatif sur l'utilisateur de l'action dans la table:

Sélectionnez Action Colonne d'utilisateur. Groupe par ... [x] Basic, groupe par: Action Utilisateur, nouveau nom de colonne: Compte, opération: Nombre de lignes [OK] P>

et modifie le code résultant de P>

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Grouped Rows" = Table.Group(Source, {"Action User"}, {{"Count", each Table.AddIndexColumn(_, "Cum",1,1), type table}}),
#"Expanded Count" = Table.ExpandTableColumn(#"Grouped Rows", "Count", {"Index", "Cum"}, {"Index", "Cum"}),
#"Pivoted Column1" = Table.Pivot(Table.TransformColumnTypes(#"Expanded Count", {{"Cum", type text}}, "en-US"), List.Distinct(Table.TransformColumnTypes(#"Expanded Count", {{"Cum", type text}}, "en-US")[Cum]), "Cum", "Index")
in #"Pivoted Column1"


3 commentaires

Question rapide - Si la colonne Index est plusieurs numéros de l'ordre croissant, par exemple, Employee B Numéros 7, 443 et 913 Pourquoi le nombre ne reste-t-il pas en ordre numérique ? Il sort comme 443, 7, 913 qui semble être un tri du texte et que le type de colonne affiche ABC123 plutôt que de 123. Y a-t-il quelque chose que je pouvais ajouter pour garder ceux-ci dans l'ordre numérique?


Le mien apparaît comme trier original, alors ne sais pas pourquoi. Essayez Alexis 'ci-dessous peut-être


Toutes mes excuses - cela montre dans le bon ordre si je me souviens de le trier en premier. La colonne que je n'ai pas montrée dans mon exemple est "Cumm {"Cumm Merci encore pour votre aide.



0
votes

Une autre façon de le faire est de faire un groupe et de modifier votre fonction d'agrégation. Concaténer au lieu de somme / max / moyenne. Ensuite, vous pouvez diviser par le délimiteur que vous utilisez dans votre concaténation text.combine code> fonction.

Lorsque vous effectuez un groupe, l'étape ressemble généralement à ceci: p>

let
    Source = Table1,
    #"Grouped Rows" = Table.Group(Source, {"ActionUser"}, {{"Concat", each Text.Combine(List.Transform([Index], Text.From), ","), type text}}),
    #"Split Column by Delimiter" = Table.SplitColumn(#"Grouped Rows", "Concat", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), {"Concat.1", "Concat.2", "Concat.3", "Concat.4", "Concat.5"}),
    #"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"Concat.1", Int64.Type}, {"Concat.2", Int64.Type}, {"Concat.3", Int64.Type}, {"Concat.4", Int64.Type}, {"Concat.5", Int64.Type}})
in
    #"Changed Type"


2 commentaires

Merci pour la réponse @Alexis. Problème que j'ai avec cette réponse, c'est que cela ne montre que cinq colonnes de données de données (comme c'est ce que mon exemple avait eu). Mes données réelles ont un nombre variable de colonnes - au moment où le minimum est 1 colonne et le maximum est de 28 colonnes.


Oui. Il est possible de rendre cela plus dynamique pour des colonnes variables, mais la solution de Horseyride est probablement meilleure dans ce cas.



0
votes

comme variante xxx


1 commentaires

Bien que ce code puisse résoudre la question, y compris une explication de la manière et pourquoi cela résout le problème aiderait vraiment à améliorer la qualité de votre poster et aboutit probablement à plus de votes ultérieurs. N'oubliez pas que vous répondez à la question des lecteurs à l'avenir, pas seulement la personne qui demande maintenant. S'il vous plaît Modifier Votre réponse Pour ajouter des explications et donner une indication de quelles limitations et hypothèses s'appliquent.