Petite question sur la fonction Rang

mnounette

XLDnaute Nouveau
Bonjour a tous,

Je poste une question bébête a propos des Rangs je m'en excuse :eek: je n'ai pas l'habitude d'Excel :( et j'ai passé ma matinée à rechercher sur le net..

Je souhaite tout simplement générer les rangs (contiguës) d'une plage de cellules, mais au sens inverse :

Exemple :
Pour une plage 15 17 12 12 12 10 je souhaiterais avoir 3 4 2 2 2 1.
J'ai trouvé un exemple sur le forum ici, mais vu que ce n'était pas commenté je n'ai pas compris le sens des fonctions et donc je n'ai pas pu l'adapter pour qu'il fonctionne à l'envers :(.

voici la formule utilisée dedans:
Code:
 =SI(B2="";"";SOMME(SI(B$2:B$20>B2;1/NB.SI(B$2:B$20;B$2:B$20)))+1)
elle donne pour mon exemple précédent 2 1 3 3 3 4 , je voudrais inverser comme ceci: 3 4 2 2 2 1.

Je vous remercie, et m'excuse pour cette question de newbie :eek:
 

tototiti2008

XLDnaute Barbatruc
Re : Petite question sur la fonction Rang

Bonjour mnounette,

Bienvenue sur XLD,

En effet, jolie formule de Monique
Même si je ne comprend pas tout (et que j'aurais été incapable de créer la formule) je crois qu'il te suffit de changer le ">" en "<" pour obtenir le résultat voulu
 

Excel-lent

XLDnaute Barbatruc
Détail sur la fonction Rang

Bonjour à toi jeune Padawan ;)

Si ta série de nombre est écrite dans les cellules [A1...A6]

Si tu veux le rang dans l'ordre décroissant :
Code:
=RANG(A1;$A$1:$A$6;0)
ou
Code:
=RANG(A1;$A$1:$A$6)

Si tu veux le rang dans l'ordre croissant :
Code:
=RANG(A1;$A$1:$A$6;1)
ou
Code:
=RANG(A1;$A$1:$A$6;2)
ou
Code:
=RANG(A1;$A$1:$A$6;3)
ou
Code:
...

En clair :
=RANG(le nombre dont tu veux connaître le rang;la zone où se situe ta liste;Ordre croissant ou décroissant)

Si tu veux l'ordre décroissant : ne rien mettre ou écrire 0
Si tu veux l'ordre croissant : toute valeur différente de zéro

Pour information, compte tenu que tu as des nombres "ex-aequo" :
-> dans l'ordre croissant cela donne : 5 - 6 - 2 - 2 - 2 - 1
-> dans l'ordre décroissant : 2 - 1 - 3 - 3 - 3 - 6

Et non pas 3 4 2 2 2 1, ou 2 1 3 3 3 4

Bonne après midi
 

mnounette

XLDnaute Nouveau
Re : Petite question sur la fonction Rang

Re bonjour a tous, je ne m'attendais pas a des réponses aussi rapides! Ce forum m'étonne Bravo.

Pour la formule, j'ai déjà essayé de changer le ">" par "<" intuitivement, mais ça n'a pas donné le résultat escompté, ça me donne une erreur de div/0 impossible, je me suis dit qu'il faudrait changer d'autre chose aussi dans la formule mais j'ignore ce que c'est.

Concernant la fonction Rang , je ne l'ai pas utilisée justement car elle "saute" les rangs lorsqu'il y a des ex-æquo, je voudrais que ce soit pluton des rangs contiguës. des 2 1 3 3 3 4 et non 2 1 3 3 3 6.

Merci encore.
 

Dugenou

XLDnaute Barbatruc
Re : Petite question sur la fonction Rang

Bonjour à tous,

Amusant de voir qu'on est si nombreux à admirer cette formule de Monique.
J'avais commencé comme excel lent avant de me rendre compte que tu ne voulais pas tenir compte des ex aequo.
Je confirme que ça fonctionne avec : =SI(A1="";"";SOMME(SI(A$1:A$6<A1;1/NB.SI(A$1:A$6;A$1:A$6)))+1)
a condition de VALIDER AVEC CTRL+MAJ+ENTREE : il faut voir les {} autour de la formule après validation
on peut ensuite recopier vers le bas

Cordialement
 

manikam

XLDnaute Junior
Re : Petite question sur la fonction Rang

Bonjour,

si ta plage commence à B2
tu met en D2
Code:
=SI(RANG(B2;$B$2:$B$7;1)=SOMMEPROD(($B$2:$B$7>0)*($B$2:$B$7=$B$3:$B$8));RANG(B2;$B$2:$B$7;1);ABS(RANG(B2;$B$2:$B$7;1)-SOMMEPROD(($B$2:$B$7>0)*($B$2:$B$7=$B$3:$B$8))))
 

mnounette

XLDnaute Nouveau
Re : Petite question sur la fonction Rang

Le fait de changer de signe vers "<" me donne toujours division par 0, :confused:

Je vous mets en pièce jointe le fichier d'exemple que j'ai trouvé sur le forum, dans lequel j'ai modifié la première cellule vers "<".
 

Pièces jointes

  • Rangsmnounette.xls
    19.5 KB · Affichages: 99

mnounette

XLDnaute Nouveau
Re : Petite question sur la fonction Rang

Bonjour,

si ta plage commence à B2
tu met en D2
Code:
=SI(RANG(B2;$B$2:$B$7;1)=SOMMEPROD(($B$2:$B$7>0)*($B$2:$B$7=$B$3:$B$8));RANG(B2;$B$2:$B$7;1);ABS(RANG(B2;$B$2:$B$7;1)-SOMMEPROD(($B$2:$B$7>0)*($B$2:$B$7=$B$3:$B$8))))


Merci je vais essayer votre formule, même si elle est trop complexe pour moi car j'ai encore le cœur fragile à l'Excel :D !
 

Dugenou

XLDnaute Barbatruc
Re : Petite question sur la fonction Rang

Bonjour,
ça fonctionne si tu utilises la plage A2:A16 au lieu de A2:a20

Dans le fil d'origine, il est bien expliqué que s'il y a des cellules vides il faut utiliser une autre formule qui donne ceci dans ton fichier :

=SI(ESTNUM(B2);SOMME(SI(B$2:B$20<B2;SI(ESTNUM($B$2:$B$20);1/NB.SI(B$2:B$20;B$2:B$20))))+1;"")
toujours en matriciel

Cordialement
 

mnounette

XLDnaute Nouveau
Re : Petite question sur la fonction Rang

Bonjour à tous,

Adapte la plage à tes cellules renseignées :



A+ à tous



En effet quand je mets la taille exacte de la plage ça marche MERCI beaucoup!
Je trouve cela bizarre quand même que ça marchait avec le signe ">" sans changer la plage :confused: ... Mais bon je ne vais pas chercher midi a 14h non plus :D!

Une dernière question j'aimerais bien comprendre que fait exactement l'instruction NB.SI(A$1:A$6;A$1:A$6) dans la formule ? je suppose qu'elle calcule le nombre de valeurs non vides sur la plage A$1:A$6, mais le critère de la condition (qui est le deuxième A$1:A$6 ) m'embrouille..
 

Dugenou

XLDnaute Barbatruc
Re : Petite question sur la fonction Rang

Bonjour,

en fait ce NB.SI calcule combien de fois chaque valeur est trouvée.
1/NB.SI donne 1/3 quand on trouve la valeur 3 fois et donc
somme (1/NB.si) donne 1 pour chaque valeur différente de la liste
avec si plage<B2 on compte combien il y a de valeurs différentes plus grande avec > ou plus petites avec <

Pour en revenir à la formule, on pourrait aussi faire une plage adaptable à la longueur des données avec Decaler.

Cordialement
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Petite question sur la fonction Rang

Bonjour mnounette, le fil,

Une dernière question j'aimerais bien comprendre que fait exactement l'instruction NB.SI(A$1:A$6;A$1:A$6) dans la formule ?

Allez dans la barre de formule et - sans vous tromper - sélectionnez l'expression qui vous intéresse.

Puis appuyez sur la touche F9 : ici, vous obtenez une matrice. Ensuite réfléchissez...

A+
 

mnounette

XLDnaute Nouveau
Re : Petite question sur la fonction Rang

Bonjour,

en fait ce NB.SI calcule combien de fois chaque valeur est trouvée.
1/NB.SI donne 1/3 quand on trouve la valeur 3 fois et donc
somme (1/NB.si) donne 1 pour chaque valeur différente de la liste
avec si plage<B2 on compte combien il y a de valeurs plus grande avec > ou plus petites avec <

Pour en revenir à la formule, on pourrait aussi faire une plage adaptable à la longueur des données avec Decaler.

Cordialement


Oui je comprend mieux le sens, je te remercie vivement Dugenou, je vais tester aussi la fonction Decaler pour la rajouter a ma base de données :)!

Merci à tous pour vos réponses, la dynamique du forum est très louable.
Bonne continuation!
 

Discussions similaires

Réponses
4
Affichages
418

Statistiques des forums

Discussions
314 633
Messages
2 111 418
Membres
111 127
dernier inscrit
flygreg