Ma Minute M - Garder que les colonnes ayant le même prefixe : Table.FromList+ SelectRows + Select
par
, 12/04/2025 à 17h17 (336 Affichages)
Objectif
En une seule étape, afficher la table avec la colonne [Name] et toutes les colonnes commençant par [col]
Id Col1 Col2 Col3
Data
Fichier Excel avec les colonnes suivantes
Id Col1 Col2 Col3 Valeur Commentaire
Code
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 let Source = Excel.Workbook(File.Contents("C:\source.xlsx"), null, true), Data_Table = Source{[Item="Data",Kind="Table"]}[Data], #"Changed Type" = Table.TransformColumnTypes(Data_Table,{{"Name", type text}, {"Col1", type text}, {"Col2", type any}, {"Col3", type any}, {"Valeur", type text}, {"Commentaire", type text}}), #"Remove list col" = let listCol = Table.ColumnNames( #"Changed Type"), tblColName = Table.FromList(listCol,null), tblColNameSelection = Table.SelectRows(tblColName, each [Column1] = "Name" or Text.StartsWith([Column1], "Col")), lstColNameSelection = tblColNameSelection[Column1], tblFinal = Table.SelectColumns(#"Changed Type",lstColNameSelection) in #"tblFinal" in #"Remove list col"
Analysons l'étape #"Remove list col" qui répond à l'objectif
- let => obligatoire si une étape est composée de plus d'une commande
- .
- listCol = Table.ColumnNames( #"Changed Type"),
- Donne la liste des colonnes d'une table donnée en paramètre dans un objet List à 1 colonne
- tblColName = Table.FromList(listCol,null),
- Transforme une liste en table dans l'objectif de faire une sélection des lignes dont la valeur commence par [col]. Cette méthode n'existe pas pour un objet List.
- Null car il n'y a qu'une seule colonne donc pas de séparateur pour identifier la fin d'une colonne
- tblColNameSelection = Table.SelectRows(tblColName, each [Column1] = "Name" or Text.StartsWith([Column1], "Col")),
- Sélection des lignes dont la valeur commence par [col] ou égale à [Name]
- Permis car tblColName passé en paramètre est un objet table
- Astuce : Pour obtenir le code, créer cette opération comme l'étape suivante à tblColName. il faut donc que tblColName soit en sortie => in tblColName
- lstColNameSelection = tblColNameSelection[Column1],
- Transforme l'unique colonne de la table tblColNameSelection en objet List.
La méthode est NomTable[NomColonne]- tblFinal = Table.SelectColumns(#"Changed Type",lstColNameSelection)
- Sélection des colonnes à afficher (Conserver) en sortie du traitement
- in #"tblFinal"
- Indique la source en sortie
Source
chaine goodly
C'est maintenant Ta Minute M