Accueil – Le CFO masqué › Forums › Power Query › soustraction dans une colonne
- Ce sujet contient 3 réponses, 3 participants et a été mis à jour pour la dernière fois par hboisteau, le il y a 1 année.
-
AuteurArticles
-
23 septembre 2023 à 11 h 10 min #132649hboisteauParticipant
Bonjour,
je souhaite soustraire le chiffre dans une colonne .
13 – 11/09/23 – 13h00 – 125
13 – 11/09/23 – 13h30 – 129 – différence 4
13 – 11/09/23 – 14h00 – 132 – différence 3Voila un petit exemple pour une meilleure compréhension
Je vous remercie par avance,
HB
23 septembre 2023 à 12 h 38 min #132651Nicolas 🇫🇷ParticipantBonjour HB. Dans power query, le principe est d’ajouter une colonne avec un index commencant par 0 puis une autre avec un index commençant par 1. On fera ensuite une jointure avec la table sur elle-même avec les deux colonnes d’index comme clé. Il est ainsi possible de développer une deuxième colonne “valeur” correspondant à la ligne précédente. Il suffira d’ajouter une colonne pour soustraire les deux valeurs puis de supprimer les colonnes inutiles.
Cdt
Nicolas
23 septembre 2023 à 13 h 01 min #132652DanielParticipantBonjour hboisteau, Nicolas, le Forum,
Je peux proposer cette solution, elle aussi sur base d’un index.
Il suffit de changer le nom des intitulés de colonnes car non fourni dans le petit exemple.Début de la requête
let
Source = Excel.CurrentWorkbook(){[Name=”tabData”]}[Content],
ModificationTypeDonnees = Table.TransformColumnTypes(Source,{{“ID”, Int64.Type}, {“Date”, type date}, {“Heure”, type time}, {“Montant”, Int64.Type}}),
GroupLignesID = Table.Group(#”Type modifié”, {“ID”}, {{“FullTable”, each _, type table [Date=nullable datetime, #”ID”=nullable number, Valeur=nullable number]}}),
IndexFullTable = Table.TransformColumns(GroupLignesID,{{“FullTable”, each Table.AddIndexColumn(_,”Index”,0,1)}}),
AddColumnDifference = Table.AddColumn(IndexFullTable, “CalculPrevValue”, each let
AllDataTable = [FullTable],
PrevRowValue = Table.AddColumn(
AllDataTable,”Dif”,
each try AllDataTable[Montant] {[Index]} – AllDataTable[Montant] {[Index]-1} otherwise null)
in PrevRowValue),
DevelopperDifference = Table.ExpandTableColumn(AddColumnDifference, “CalculPrevValue”, {“Date”, “Heure”, “Montant”, “Dif”}, {“Date”, “Heure”, “Montant”, “Dif”}),
ModificationTypeDonneesFinal = Table.TransformColumnTypes(DevelopperDifference,{{“Heure”, type time}, {“Date”, type date}, {“Montant”, Int64.Type}, {“Dif”, Int64.Type}, {“ID”, type text}}),
SuppressionColonnes = Table.RemoveColumns(ModificationTypeDonneesFinal,{“FullTable”})in
SuppressionColonnes
Fin de la requête
Cordialement
Daniel24 septembre 2023 à 7 h 49 min #132655hboisteauParticipantBonjour le Forum,
Merci beaucoup pour votre aide, cela fonctionne parfaitement.
Le principe de créer deux index et de fusionner la requête sur elle même c’est astucieux.
Merci encore
HB
-
AuteurArticles
- Vous devez être connecté pour répondre à ce sujet.