Calcul de moyennes de données stockées dans un tableau

Fermé
Mathieu64 - 10 mars 2016 à 15:36
 Mathieu64 - 14 mars 2016 à 09:31
Bonjour,

Je souhaite calculer la moyenne pour certaines colonnes d'un tableau dans lequel j'ai stocké des données, sachant que les dimensions du tableau (sample) peuvent varier.
Voilà ce que j'ai tenté :

'Enregistrement des données dans sample
ReDim sample(k, l - 1)
k = -1
For i = 2 To n
If Cells(i, 10).Value < 30 Then
Else
If Cells(i, 10).Value > 50 Then
k = k + 1
For j = 1 To l
sample(k, j - 1) = Cells(i, j)
Next
End If
End If
Next

'Calcul des moyennes
For i = 7 To l
Cells(n + 2, i) = Application.WorksheetFunction.Average(Range(sample(0, i - 1), sample(k, i - 1)))
Next


A priori c'est la ligne de code du calcul de la moyenne qui ne fonctionne pas, comment calculer la moyenne d'une colonne d'un tableau lorsqu'on ne connait pas les dimensions du tableau, quelqu'un peut m'aider ?

Merci d'avance.
A voir également:

2 réponses

bonjour

ReDim sample(k, l - 1)

Tu connais la taille du tableau, c'est k lignes et l-1 colonnes

Si tu veux la moyenne de la colonne n°3

somme=0
for i = 1 to k
somme=somme+sample(i,3)
next
moyenne = somme / k


A+
0
Merci pour ta réponse Yoda, je voulais éviter cette méthode car je dois aussi faire la même chose pour les écart-types et là ça se complique, mais ça marche !
0
Yoda > Mathieu64
10 mars 2016 à 20:08
La fonction average a besoin qu'on lui passe une liste de nombres, par exemple

Application.WorksheetFunction.Average(sample(1), sample(2),sample(3))

Dans ton cas, ça ne va pas aller. Mais tu peux mettre ton tableau sample() sur une feuille comme ça:

for i = 1 to k
Sheets("feuil1").Range("a" & i).Value =sample(i)
next
moyenne = Application.WorksheetFunction.Average(range("a1:a" & k))

et faire de même pour les écarts types
0
Merci pour l'explication, il n'y donc aucun moyen direct pour dire à la fonction average de faire le calcul de sample(1) à sample(k) ?
0
Yoda > Mathieu64
11 mars 2016 à 09:57
Bonjour,

A mon avis non. (C'est ce que j'ai compris en regardant dans l'aide.)
Mais calculer une moyenne, c'est pas compliqué.
Et calculer l’écart type, si on connait la formule, c'est un peu plus compliqué, mais réalisable.

https://www.lesbonsprofs.com/notion/mathematiques-1e/statistiques-3/variance-et-ecart-type-la-fiche-de-revision

A+
0
eriiic Messages postés 24603 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 15 décembre 2024 7 254
11 mars 2016 à 23:54
Bonjour,

tu peux lui passer seulement la 3ème colonne de sample :
    Dim sample, moyenne As Single
    sample = [A2:E5]
    ' moyenne 3ème colonne
    moyenne = Application.Average(Application.Index(sample, , 3))

eric

0
Merci beaucoup c'est la formule que je cherchais !
0