Médiane mais pas tout à fait....

Signaler
Messages postés
14
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
1 juillet 2008
-
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
-
Bonjour,

Est-ce que quelqu'un connait un moyen pour faire apparître les données centrales d'une liste?

Je m'explique: j'ai une liste de prix pour laquelle je cherche le mini, le maxi et le milieu, c'est à dire le prix exact qui est le plus proche de la valeur du milieu.
(j'ai des lignes contenant une trentaine de prix chacune ou plus)

Par exemple si j'utilise la fonction Médiane (en jaune) avec les données suivantes...
       
       A             B             C             D             E              F
<colgroup><col span=\"7\" width=\"80\" /></colgroup>----
100, 150, 200, 250, 300, 500,   225

... ça me donne "225" alors que je voudrais que ça me mette le prix qui est en D qui est de "250"(qui représente un prix existant et non pas une médiane ou une moyenne de prix)

Nat

12 réponses

Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut,

=RECHERCHEH(MEDIANE(A1:F1);A1:F1;1)

A+
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
 (100+150+200+250+300+500)/6= 250 , pas 225

avec de mauvais résultats tu vas avoir des difficultés à faire le bon algo
<hr size ="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
1835
Date d'inscription
vendredi 13 mai 2005
Statut
Membre
Dernière intervention
20 novembre 2013
9
Salut PCPT,

non la fonction mediane ne calcul pas une moyenne mais un milieu, donc 225 est correct
Messages postés
14
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
1 juillet 2008

Mais non lol, c la moyenne que tu as calculé là...

Si tu mets les données que j'ai écrite sur excel et que tu rentres la foncion Médiane, tu verras que le résultat et de 225.

Et concernant le moyenne, imaginons (et c même mon cas!) que les données ressemblent à ça:

          A               B            C             D             E             F
<colgroup><col style=\"WIDTH: 60pt\" span=\"6\" width=\"80\" /></colgroup>----
1852, 1966, 1512, 4829, 3654, 4875
La moyenne sera de (A+B+C+D+E+F)/6 3114.66>>> Alors que moi je veux : 3654 (qui est la valeur la plus proche du milieu entre le mini qui est de 1512 et le maxi qui est de 4875.)

=>>> Et en Médiane, sur ce même cas, il me met 2810.

Bref, dans les deux cas, ce n'est pas le résultat que je cherche à obtenir...

Nat
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
ok, merci pour ta rectification

le et non pas une médiane ou une moyenne de prix m'a trompé ^^

donc concrêtement çà nous donne quoi?
(moyenne - (max/2 -min/2)) /2 ?

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
14
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
1 juillet 2008

J'ai essayé ta formule "=RECHERCHEH(MEDIANE(A1:F1);A1:F1;1)" sur le même modèle et ça me donne 200 comme résultat ===>>> le + logique serait 250.

J'ai donc essayé avec les chiffre suivants...

  A       B      C       D
100    69   325   400

... et le résultat et 69 ===>>> alors que c'est mon mini

De plus, mes prix sont séparés et non alignés à la suite les uns des autres. Je dois faire (A1;B1;C1;D1) au lieu de (A1:D1) et en faisant ça avec ta formule, ça me donne :

=RECHERCHEH(MEDIANE(A1;B1;C1;D1);(A1;B1;C1;D1);1) et quand je valide, ça marque #N/A

Nat
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
quelqu'un aurait-il l'amabilité de me dire ce qu'est le calcul de médiane? j'suis pas un matheux ^^

je te donne ensuite un exemple de possibilité ;)
Messages postés
14
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
1 juillet 2008

Ca me donne 25 comme résultat

Nat
Messages postés
14
Date d'inscription
jeudi 19 juin 2008
Statut
Membre
Dernière intervention
1 juillet 2008

Définition de Médiane = milieu des deux valeurs centrales de la liste

ex: 100  150  200   250  300  500

les deux valeurs centrales sont : 200 et 250
donc la médiane est le milieu entre ces deux valeurs, soit 225

alors que la moyenne c'est 250
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
43
eh bah voila

exemple en VB6, il doit être possible de passer tes cellules en argument mais je ne fais pas de VBA

Private Type tValues
    Letter As String
    Value As Long
End Type
Dim atArray(5) As tValues

Sub Test()
    Dim i As Long      'boucle
    Dim lMin As Long   'index
    Dim lMax As Long   'index
    Dim lMoy As Long   'valeur
    Dim lNear As Long  'index
    Dim lRet1 As Long  'valeur temp
    Dim lRet2 As Long  'valeur temp

''   tableau de
test
'    atArray(0).Letter = "A":
atArray(0).Value = 100'    atArray(1).Letter "B": atArray(1).Value 150
'    atArray(2).Letter
"C": atArray(2).Value 200'    atArray(3).Letter "D": atArray(3).Value
250'    atArray(4).Letter "E": atArray(4).Value
300
'    atArray(5).Letter = "F":
atArray(5).Value = 500
    
    atArray(0).Letter = "A": atArray(0).Value = 1852
    atArray(1).Letter = "B": atArray(1).Value = 1966
    atArray(2).Letter = "C": atArray(2).Value = 1512
    atArray(3).Letter = "D": atArray(3).Value = 4829
    atArray(4).Letter = "E": atArray(4).Value = 3654
    atArray(5).Letter = "F": atArray(5).Value = 4875

'   valeur MIN
    lMin = 0
    For i = 1 To UBound(atArray)
        If atArray(i).Value < atArray(lMin).Value Then lMin = i
    Next i
    MsgBox "le plus petit : " & atArray(lMin).Letter & "  -> " & CStr(atArray(lMin).Value)

'  
valeur MAX
    lMax = 0
    For i = 1 To UBound(atArray)
        If atArray(i).Value > atArray(lMax).Value Then lMax = i
    Next i
    MsgBox "le plus grand : " & atArray(lMax).Letter & "  -> " & CStr(atArray(lMax).Value)

'  
SOMME
    lMoy = 0
    For i = 0 To UBound(atArray)
        lMoy = lMoy + atArray(i).Value
    Next i
    MsgBox "somme : " & CStr(lMoy)

'  
MOYENNE
    lMoy = lMoy / (UBound(atArray) + 1)
    MsgBox "moyenne : " & CStr(lMoy)

'   MEDIANE = nombre
du milieu pour impaire, moyenne des 2 du milieu si paire
    lRet1 = UBound(atArray) + 1
    If (lRet1 And 1) = 0 Then
'      
pair
        lRet1 = (lRet1 / 2) - 1
        lRet2 = atArray(lRet1).Value
        lRet2 = lRet2 + atArray(lRet1 + 1).Value
        lRet2 = lRet2 / 2
    Else
'      
impair
        lRet2 = atArray(lRet1 / 2).Value
    End If
    MsgBox "médiane : " & CStr(lRet2)
    

'   LE PLUS PROCHE
    lNear = lMax
    lRet2 = Abs(atArray(lMax).Value)
    For i = 0 To UBound(atArray)
        lRet1 = Abs(Abs(lMoy) - Abs(atArray(i).Value))
        If lRet1 < lRet2 Then
            lRet2 = lRet1
            lNear = i
        End If
    Next i
    lRet1 = Abs(Abs(lMoy) - Abs(atArray(lNear).Value))
    MsgBox "le plus proche : " & atArray(lNear).Letter & "  -> " & CStr(atArray(lNear).Value) & "   avec
" & CStr(lRet1) & " de différence par
rapport à la moyenne"
End Sub

++
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,

à ma connaissance :

1) on trie par ordre croissant = ==>> tableau ordonné de N éléments
2) on extrait l'indice I résultat  entier de la division par 2 de N ===>>  I =N\2
3)
 Si N impair ===>> médiane = tableau(I+1)
 Si N pair ===>> médiane = (tableau(I-1) + tableau(I+1))/2
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Correction (excuses) :
 Si N pair ===>> médiane = (tableau(I) + tableau(I+1))/2