Calcul de moyennes de données stockées dans un tableau
Mathieu64
-
Mathieu64 -
Mathieu64 -
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é :
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.
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.
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+-
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 !
- 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
-
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) ?
- 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+
-
-
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