Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Power Query - Moyenne glissante

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

danielco

XLDnaute Barbatruc
Bonjour,

J'ai une colonne de dates et une colonne de valeurs. Est-il possible de créer une colonne de valeurs moyennes entre deux dates ? Je cherche à avoir une moyenne glissante.

Cordialement.

Daniel
 
Bonjour,

Voici une fonction en M qui vous donnera la moyenne des ventes entre deux dates (début et fin) pour une table 'T_Ventes' ayant une colonne 'Date' et une colonne 'Vente'

Code:
let MoyenneGlissante = (début as date,fin as date) => let       
        Lignes = Table.SelectRows(T_Ventes,  each [Date]>=début and [Date]<=fin),
        Resultat = List.Average(Lignes[Vente])
        in Resultat
in MoyenneGlissante

Sans plus d'explication sur le pourquoi du comment du pataquès difficile de faire plus.

bonne journée
 
Bonjour et merci.

C'est peut-être la solution mais j'avoue que je ne sais pas manipuler directement M. Je sais juste faire des colonnes perso ;-(
Bonjour @Roblochon ,
Je joins une copie d'écran de ce que je voudrais avec PQ : une moyenne glissant sur 7 jours :


Daniel
 
Bonsoir danielco, le fil,

Votre formule en C7 va bien sauf quand on ajoute ou supprime des lignes.

Dans ce cas il faut utiliser :
Code:
=SIERREUR(MOYENNE(DECALER(B7;;;-7));"")
Ce devrait maintenant être simple sur Power Query.

A+
 
Bonsoir @ tous,
VB:
let
    Source = Excel.CurrentWorkbook(){[Name="Tableau1"]}[Content],
    #"Type modifié" = Table.TransformColumnTypes(Source,{{"Date", type date}, {"Valeur", Int64.Type}}),
    #"Index ajouté" = Table.AddIndexColumn(#"Type modifié", "Index", 1, 1, Int64.Type),
    #"Personnalisée ajoutée" = Table.AddColumn(#"Index ajouté", "Moyenne Semaine", each List.Average(List.Range(Source[Valeur],[Index]-7,7))),
    #"Autres colonnes supprimées" = Table.SelectColumns(#"Personnalisée ajoutée",{"Moyenne Semaine"}),
    #"Type modifié1" = Table.TransformColumnTypes(#"Autres colonnes supprimées",{{"Moyenne Semaine", type number}}),
    #"Erreurs remplacées" = Table.ReplaceErrorValues(#"Type modifié1", {{"Moyenne Semaine", null}})
in
    #"Erreurs remplacées"
Voir PJ


Cordialement
 

Pièces jointes

Oui ! Merci ! Si j'ai bien compris, "List.Range" est l'équivalent de DECALER d'Excel ? (cf. Job75).

Daniel
 
Re,
Oui ! Merci ! Si j'ai bien compris, "List.Range" est l'équivalent de DECALER d'Excel ? (cf. Job75).
Oui c'est bien cela

Merci à toi aussi. Je n'ai pas vu de différence avec la solution de R@chid.
Oui il y quelques différences,
= Table.AddIndexColumn(#"Type modifié", "Index", 1, 1, Int64.Type) au lieu de 0 afin de ne pas se mélanger les pinceaux lors de = Table.AddColumn(#"Index ajouté", "Moyenne Semaine", each List.Average(List.Range(Source[Valeur],[Index]-7,7))) tu n'as pas besoin à écrire -6, comme ça tu sais très bien que tu vas utiliser le nombre de lignes que tu as besoin de prendre en compte dans les deux cotés 7 et -7 et pas 7 et -6.
En plus, avec List.Average() tu évites de faire la somme avec List.Accumulate() et diviser par le nombre de lignes.

Cordialement
 
Merci à toi aussi. Je n'ai pas vu de différence avec la solution de R@chid.
Re,
R@chid a bien compris et expliqué la différence entre les 2 solutions, il y a sinon effectivement une petite ressemblance.
Sinon, je n'ai fait que reprendre 1 pour 1 la solution présentée dans la vidéo de mon lien du poste #3 sans chercher à modifier ce code.
La proposition à R@chid est effectivement celle à retenir car plus simple dans la compréhension notamment par la colonne d'indexation à partir de 1 et de la fonction List.Average

Cordialement
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
544
Réponses
8
Affichages
496
  • Question Question
Microsoft 365 Mediane occupation
Réponses
6
Affichages
130
  • Résolu(e)
Microsoft 365 DATEDIF
Réponses
11
Affichages
193
Réponses
5
Affichages
150
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…