Moyenne variable

Résolu/Fermé
Julie011277 - 26 août 2010 à 08:21
 jub01 - 26 août 2010 à 11:52
Bonjour,

je cherche à faire une moyenne variable dans excel.

Exemple:


heure Valeur
14:00 5
14:10 10
14:20 7
14:30 6.5
14:40 8
14:50 11


et j'aimerai rentrer une heur de départ et une heure d'arrivée et le système me calcule la moyenne des valeurs entre les 2.

Heure de départ: 14:20

Heure d'arrivée: 14:40

Résultat: 7.16666666

D'avance un grand merci!!!

Julie

4 réponses

pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 août 2010 à 08:42
Bonjour,
Un petit problème matexcelmatiques pour débuter la journée.
Supposons tes horaires situés en colonne A, de A1 à A1000 et les valeurs correspondantes de B1 à B1000. En C1 : placer la borne inférieure en C2 la borne supérieure.
Problème :
Moyenne = SOMME/Nombre de valeurs
Somme des valeurs de la col B en fonction des valeurs contenues en A et des deux critères C1 et C2 :
=SOMMEPROD((A1:A1000>=C1)*(A1:A1000<=C2)*B1:B1000)
Nbre de valeurs en colonne A comprises entre les bornes C1 et C2 :
=SOMMEPROD((A1:A1000>=C1)*(A1:A1000<=C2))
La Moyenne :
=SOMMEPROD((A1:A1000>=C1)*(A1:A1000<=C2)*B1:B1000)/SOMMEPROD((A1:A1000>=C1)*(A1:A1000<=C2))

Il y a certainement d'autres méthodes, je t'en ai livré une qui fonctionne pas trop mal...

En prime :
1- Un classeur exemple
2- Une formule qui prends en compte une plage variable de calcul non définie. Attention il doit y avoir en A et B le même nombre de valeurs...
=SOMMEPROD((A1:DECALER(A1;;;NBVAL(A:A))>=C1)*(A1:DECALER(A1;;;NBVAL(A:A))<=C2)*B1:DECALER(B1;;;NBVAL(B:B)))/SOMMEPROD((A1:DECALER(A1;;;NBVAL(A:A))>=C1)*(A1:DECALER(A1;;;NBVAL(A:A))<=C2))
ps : je l'aime bien cette SOMMEPROD + DECALER...
1
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
26 août 2010 à 10:24
et bon, comme d'hab, une solution VBA !!
Sub Moyenne()
Dim Moy As Double, Lig As Long, OK As Boolean, C As Integer
' en C1 > heure départ
' En C2 > heure arrivée
' En C4 > résultat
    For Lig = 1 To Range("A65536").End(xlUp).Row
        If Cells(Lig, 1) = Cells(1, 3) Then
            OK = True: Moy = Cells(Lig, 2): C = 1
        ElseIf Cells(Lig, 1) = [C2] Then
            Moy = Moy + Cells(Lig, 2): C = C + 1
            [C4] = Moy / C: Exit For
        ElseIf OK Then
             Moy = Moy + Cells(Lig, 2): C = C + 1
        End If
    Next Lig
End Sub


Pourrait en faire une fonction pour un résultat immédiat dans cellule C4
A+
1
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 août 2010 à 10:28
Pour quelqu'un de pas trop réveillé, la méthode VBA est super. Je me permets de garder ce code.
@+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
26 août 2010 à 10:48
Bonjour à tous
et une petite matricielle pour compléter l'éventail de solutions !!

=MOYENNE(SI((A2:A100>=C1)*(A2:A100<=C2)*(A2:A100<>"");B2:B100))


a valiser par Ctrl+maj+entree (et non par entree comme d'hab) le curseur clignotant dans la barre de formules
1
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
26 août 2010 à 09:07
Bonjour,
Comment tu arrive à 7.16666666 ?
la moyenne c'est 14:30
et si tu divise pat 2 ça fait 7:15
si tu veux avoir le résultat en base 100 au lieu de 60 ça fait 7,25
??
A+
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 26/08/2010 à 09:10
Salut lermite,
Elle veux faire la moyenne des valeurs... En fait, elle a deux colonnes de données : colonne A des heures et colonne B des valeurs. C'est la moyenne des valeurs colonne B contenues dans un intervalle définit colonne A...
Bonne journée

ps : si tu veux un p'tit café, n'hésite pas...
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
Modifié par lermite222 le 26/08/2010 à 09:22
Bonjour pijaku,
1°) ton poste n'était pas visible quand j'ai posté !!
Suis peut-être pas encore bien réveillé mais ce que tu dis ne correspond pas non plus.
Si je reprend sont exemple et tes déductuons,
14:20    7 
14:40    6.5

Je vois pas comment trouver 7.16666
j'aimerai rentrer une heur de départ et une heure d'arrivée et le système me calcule la moyenne des valeurs entre les 2.
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
26 août 2010 à 09:31
Prendre en compte les valeurs en gras ci dessous :
heure Valeur
14:00 5
14:10 10
14:20 7
14:30 6.5
14:40 8

14:50 11
7, 6.5 et 8 sont concernées car en colonne A les horaires sont compris entre 14:20 et 14:40...
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
26 août 2010 à 10:21
Beh oui, c'est comme je disais, suis pas bien réveillé !!
0
Merci à tous!!!!!
Vos solutions sont toutes super cool!

Quand je serai grande, moi aussi je ferai des formules matricielles!

bonne journée
0