demande methode

  • Initiateur de la discussion khabs
  • Date de début
K

khabs

Guest
Bonjour Forum

j'ai des valeurs(6000) qui sont sur la colonne B.
je veut faire la moyenne par 60 valeurs.
une methode efficace en excel ou en macro serait la bienvenue
merci d'avance
 

Hervé

XLDnaute Barbatruc
Bonjour

Ta demande manque d'explication:

60 valeurs à la suite ?

Je suis parti sur cette hypothèse à travers la macro suivante :

Public Sub moyenne()
Dim ligneB As Integer
Dim ligneC As Byte
Dim moyenne As Double

'initialisation de la la variable ligne
ligneC = 1
'pour ligneB=1 jusqu'à 6000 en passant de 60 lignes en 60 lignes
For ligneB = 1 To 6000 Step 60
'la moyenne est calculé entre les 2 limites ligneB et ligneB+60
moyenne = Application.WorksheetFunction.Average(Range(Cells(ligneB, 2), Cells(ligneB + 59, 2)))
'on inscrit colonne C au numéro de ligneC
Range('c' & ligneC) = moyenne
'on incrémente ligneC pour éviter d'écraser les données
ligneC = ligneC + 1
'ligneB suivant
Next ligneB
End Sub

Ce code calcule la moyenne de la colonne B par paquet de 60 valeurs, soit de 1 à 60 puis 61 à 120, 121 à 180... jusqu'à 6000,

et inscrit ces moyenne en colonne C.

Espérant t'avoir rendu service.

Salut
 

Philippe

XLDnaute Occasionnel
Bonjour,

J'arrive après Hervé mais j'ai écrit du code alors je te l'envoie:

Sub moye()
For Group = 0 To 10
tot = 0
For sougroup = 1 To 60
lign = (60 * Group) + sougroup
tot = tot + (Range('B' & lign).Value)
Next sougroup
moy = tot / 60
Range('E' & (Group + 1)).Value = moy
Next Group
End Sub


Calacul par bloc de 60, résultats en 'E'
 

Hervé

XLDnaute Barbatruc
Bonjour

Quelle données se trouve en ligne 81 ?

Je n'arrive pas à reproduire cette erreur.

Ceci doit venir de la structure de ta feuille, pourrais tu mettre en pièce jointe un exemple de ton classeur.

A plus

Hervé
 

Monique

Nous a quitté
Repose en paix
Bonjour,

Par formules.
Tes valeurs de A1 à A6000

Si tu démarres tes moyennes en ligne 1 :
=MOYENNE(DECALER($A$1;60*(LIGNE()-1);;60;))

Si tu démarres en ligne 2 :
=MOYENNE(DECALER($A$1;60*(LIGNE()-2);;60;))
puis tu fais un copié-collé

Decaler( nb de lignes; 0 colonne donc omis; hauteur; largeur = 1 donc omis)
 

Discussions similaires

Réponses
5
Affichages
293

Statistiques des forums

Discussions
313 043
Messages
2 094 717
Membres
106 075
dernier inscrit
ronagaya