Power Query tri powerquery

st007

XLDnaute Barbatruc
Bonjour,
je souhaiterais un "sous tri" puisqu'un tri "classique" me classe 1,10,100 avant 2
en colonne B mes données au format texte
plusieurs catégories suivi d'un "chiffre"
j'ai scindé la colonne, transformé en nombre
mais après ???
au final, je souhaiterais donc les catégories en ordre alphabétique tout en classant par ordre croissant le chiffre
merci d'essayer de me comprendre
 

Pièces jointes

  • Forum.xlsx
    15.2 KB · Affichages: 1

DJunqueira

XLDnaute Occasionnel
Bonjour,

Exécuté dans Power Query.

VB:
let
    Fonte = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Dividir Coluna pela Posição" = Table.SplitColumn(Fonte, "Coluna1", Splitter.SplitTextByPositions({0, 4}, false), {"Coluna1.1", "Coluna1.2"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Dividir Coluna pela Posição",{{"Coluna1.1", type text}, {"Coluna1.2", Int64.Type}}),
    #"Linhas Classificadas" = Table.Sort(#"Tipo Alterado",{{"Coluna1.1", Order.Ascending}, {"Coluna1.2", Order.Ascending}})
in
    #"Linhas Classificadas"
 

Pièces jointes

  • Forum.xlsx
    18.3 KB · Affichages: 0

Cousinhub

XLDnaute Barbatruc
Bonjour,

Exécuté dans Power Query.

VB:
let
    Fonte = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Dividir Coluna pela Posição" = Table.SplitColumn(Fonte, "Coluna1", Splitter.SplitTextByPositions({0, 4}, false), {"Coluna1.1", "Coluna1.2"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Dividir Coluna pela Posição",{{"Coluna1.1", type text}, {"Coluna1.2", Int64.Type}}),
    #"Linhas Classificadas" = Table.Sort(#"Tipo Alterado",{{"Coluna1.1", Order.Ascending}, {"Coluna1.2", Order.Ascending}})
in
    #"Linhas Classificadas"
Bonjour,
Je pense qu'en splittant de non chiffre à chiffre, au lieu de considérer systématiquement 4 lettres puis les chiffres, on aurait une solution plus fiable.
Bonne apm
 

st007

XLDnaute Barbatruc
re,
merci pour cette solution, en effet, le split sur l'alternance lettre nombre, et re combiner pour terminer
les tri sur les colonnes ne me semblaient pas fonctionel sur mes 12000 lignes. mais .....
bonne journée

VB:
let
    Fonte = Excel.CurrentWorkbook(){[Name="Tabela1"]}[Content],
    #"Dividir Coluna pela Posição" = Table.SplitColumn(Fonte, "Column1", Splitter.SplitTextByPositions({0, 4}, false), {"Coluna1.1", "Coluna1.2"}),
    #"Tipo Alterado" = Table.TransformColumnTypes(#"Dividir Coluna pela Posição",{{"Coluna1.1", type text}, {"Coluna1.2", Int64.Type}}),
    #"Linhas Classificadas" = Table.Sort(#"Tipo Alterado",{{"Coluna1.1", Order.Ascending}, {"Coluna1.2", Order.Ascending}}),
    #"Colonnes fusionnées" = Table.CombineColumns(Table.TransformColumnTypes(#"Linhas Classificadas", {{"Coluna1.2", type text}}, "fr-FR"),{"Coluna1.1", "Coluna1.2"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"Order")
in
    #"Colonnes fusionnées"
 

JFL_XLD

XLDnaute Junior
Bonjour à tous !

Une proposition ? (en espérant avoir correctement appréhendé le besoin...;))

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Tri = Table.Sort(Source,{{each Text.Select([Colonne1],{"A".."z"}),0},{each Number.From(Text.Select([Colonne1],{"0".."9"})),0}})
in
    Tri
 

Pièces jointes

  • St007 - PQ - Tri table - v1.xlsx
    17 KB · Affichages: 1

st007

XLDnaute Barbatruc
Bonjour à tous !

Une proposition ? (en espérant avoir correctement appréhendé le besoin...;))

PowerQuery:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    Tri = Table.Sort(Source,{{each Text.Select([Colonne1],{"A".."z"}),0},{each Number.From(Text.Select([Colonne1],{"0".."9"})),0}})
in
    Tri
Excellente appréhension, excel 2019 et powerquery
avertissements de probable incompatibilité, mais çà fonctionne parfaitement
 

Discussions similaires

Statistiques des forums

Discussions
312 207
Messages
2 086 232
Membres
103 161
dernier inscrit
Rogombe bryan