Moyenne incrémentée dans gros fichier

Bonjour à tous

J'ai un fichier de données de 14 colonnes et un peu plus de 216000 lignes, la première ligne est une ligne de titres,

14test-heyn.xlsx (298.79 Ko)

la première colonne est la date, la seconde colonne est l'heure et il y a un enregistrement de données toutes les 10 secondes. Je voudrais faire des moyennes par 30 minutes pour réduire le tableau. Pouvez-vous m'aider? Merci d'avance

Bonjour et bienvenue sur le forum,

Il y a certainement des solutions plus élégantes avec PowerQuery, mais comme je n'y arrive pas je vous propose une alternative avec 2 formules et un TCD :

On détecte les tranches en colonne O avec

=PLANCHER.MATH([@TIME]*24*2)=[@TIME]*24*2

Puis on les "regroupe" avec (on pourrait faire un peu mieux en prenant les temps réels mais dans l'exemple ça correspond) :

=NB.SI($O$2:O2;VRAI)*TEMPS(0;30;0)

Puis on fait un TCD en regroupant sur cette colonne => calcul des moyennes. Voir ci-joint.

13test-heyn.zip (394.95 Ko)

PS : Sur votre profil, la version d'Excel attendue est "l'année" : 2003 / 2016 / 2024 / 365. C'est cela qui détermine votre accès (ou non) à certaines fonctionnalités. Veuillez MAJ merci

Bonjour,

Un grand merci pour votre suggestion qui fonctionne bien. Je mets à jour l'info sur la version qui est 365 français.

Super, j'espère que quelqu'un pourra vous donner une alternative PowerQuery, c'est aussi intéressant.

Bonne journée.

Bonjour,

Une alternative Power Query, comme demandée :

let
  Source = Excel.CurrentWorkbook(){[Name = "Tableau1"]}[Content], 
  Types = Table.TransformColumns(
    Source, 
    {{"DATE", Date.From}, {"TIME", Time.From}}, 
    Number.From
  ), 
  Trait_Erreurs = Table.ReplaceErrorValues(
    Types, 
    List.Zip({Table.ColumnNames(Types), {null}})
  ), 
  AjoutHeure = Table.AddColumn(
    Trait_Erreurs, 
    "Heure", 
    each Time.From(Number.RoundDown(Number.From([TIME]) * 48) / 48), 
    Int64.Type
  ), 
  Grouper = Table.Group(
    AjoutHeure, 
    {"DATE", "Heure"}, 
    List.Transform(
      List.Skip(Table.ColumnNames(Source), 2), 
      (col) => {col, each List.Average(Table.Column(_, col)), type number}
    )
  )
in
  Grouper

A tester.

Bonsoir à tous !

Une proposition type formule unique dynamique (M365) :

=LET(
    t; SIERREUR(tSource; "");
    dh; PLANCHER.MATH(CHOISIRCOLS(t; 2) * 1; "0:30");
    et; ASSEMB.H("Date"; "Demi-heure"; EXCLURE(tSource[#En-têtes]; ; 2));
    ASSEMB.V(et; GROUPER.PAR(ASSEMB.H(PRENDRE(t; ; 1); dh); EXCLURE(t; ; 2); MOYENNE; ; 0))
)

Remarque : Compte tenu de la volumétrie annoncée, l'approche Power Query est à privilégier me semble-t-il.

Bonjour,

Merci de votre proposition, je vais tester, je n'ai jamais utilisé power query ce sera une expérience de plus.

Rechercher des sujets similaires à "moyenne incrementee gros fichier"