fonction RANG --> problème d'incrémentation

Le
Vive Excel
Bonjour.

Voilà, depuis quelques temps, je m'arrache les cheveux avec un truc qui
semble tout simple sur le papier, mais pas pour Mr. Excel.

soit plage A1:A10 avec les valeurs
1 1 4 7 8 10 22 22 22 27

La logique voudrait (et c'est ce que je désire obtenir) que le rang de ces
valeurs dans cette plage donne en mode croissant
1 1 2 3 4 5 6 6 6 7

or la fonction RANG(A(x);plage;1) me donne ceci
1 1 3 4 5 6 7 7 7 10

Peut-être existe-il d'autres moyens pour contourner ce problème, sachant que
c'est la première version que je souhaite obtenir
Je préfèrerais avec des fonctions mais si il n'y a que des macros c'est ok
aussi.

D'avances, merci de votre aide.
Salutations
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Daniel
Le #3583511
Bonsoir.
Je pense que la logique d'XL est la bonne : la valeur"4" est devancée par
deux valeurs (deux "1"); elle est donc troisième. Pour obtenir ton résultat,
essaie la formule matricielle suivante (valider aveec CTRL+MAJ+Entrée) :
=NBVAL(plage)-SOMME(N(plage>A1))-1
pour des valeurs en colonne A débutant en A1.
Cordialement.
Daniel
"Vive Excel" 43fa1e21$0$18326$
Bonjour.

Voilà, depuis quelques temps, je m'arrache les cheveux avec un truc qui
semble tout simple sur le papier, mais pas pour Mr. Excel.

soit plage A1:A10 avec les valeurs
1 1 4 7 8 10 22 22 22 27

La logique voudrait (et c'est ce que je désire obtenir) que le rang de ces
valeurs dans cette plage donne en mode croissant
1 1 2 3 4 5 6 6 6 7

or la fonction RANG(A(x);plage;1) me donne ceci
1 1 3 4 5 6 7 7 7 10

Peut-être existe-il d'autres moyens pour contourner ce problème, sachant
que c'est la première version que je souhaite obtenir
Je préfèrerais avec des fonctions mais si il n'y a que des macros c'est ok
aussi.

D'avances, merci de votre aide.
Salutations





Daniel
Le #3583481
A oublier; ne vaut que pour deux ex aequo.
Daniel
"Daniel"
Bonsoir.
Je pense que la logique d'XL est la bonne : la valeur"4" est devancée par
deux valeurs (deux "1"); elle est donc troisième. Pour obtenir ton
résultat, essaie la formule matricielle suivante (valider aveec
CTRL+MAJ+Entrée) :
=NBVAL(plage)-SOMME(N(plage>A1))-1
pour des valeurs en colonne A débutant en A1.
Cordialement.
Daniel
"Vive Excel" news: 43fa1e21$0$18326$
Bonjour.

Voilà, depuis quelques temps, je m'arrache les cheveux avec un truc qui
semble tout simple sur le papier, mais pas pour Mr. Excel.

soit plage A1:A10 avec les valeurs
1 1 4 7 8 10 22 22 22 27

La logique voudrait (et c'est ce que je désire obtenir) que le rang de
ces valeurs dans cette plage donne en mode croissant
1 1 2 3 4 5 6 6 6 7

or la fonction RANG(A(x);plage;1) me donne ceci
1 1 3 4 5 6 7 7 7 10

Peut-être existe-il d'autres moyens pour contourner ce problème, sachant
que c'est la première version que je souhaite obtenir
Je préfèrerais avec des fonctions mais si il n'y a que des macros c'est
ok aussi.

D'avances, merci de votre aide.
Salutations









Vive Excel
Le #3583461
Bonsoir,

J'ai essayé votre solution qui me donne (en non matricielle)
1 1 2 3 4 5 8 8 8 9 pour 1 1 2 3
4 5 6 6 6 7 attendu
on se rapproche sauf à la fin

en matricielle {=NBVAL(plage)-SOMME(N(plage>A1))-1}
1 1 1 1 1 1 1 1 1 1
ce résultat ne veut rien dire alors j'ai peur d'avoir fourché sur la
matricielle
j'espère que c'est bien comme cela que je dois la rentrer. mes données sont
sur A1 à A10, je copie la formule de B1 à B10, je reclique zone formule
de B1, avec plage B1:B10 selectionnée et je ctrl+maj+entree . les accolades
apparaissent alors. c'est ça?


"Vive Excel" 43fa1e21$0$18326$
Bonjour.

Voilà, depuis quelques temps, je m'arrache les cheveux avec un truc qui
semble tout simple sur le papier, mais pas pour Mr. Excel.

soit plage A1:A10 avec les valeurs
1 1 4 7 8 10 22 22 22 27

La logique voudrait (et c'est ce que je désire obtenir) que le rang de ces
valeurs dans cette plage donne en mode croissant
1 1 2 3 4 5 6 6 6 7

or la fonction RANG(A(x);plage;1) me donne ceci
1 1 3 4 5 6 7 7 7 10

Peut-être existe-il d'autres moyens pour contourner ce problème, sachant
que c'est la première version que je souhaite obtenir
Je préfèrerais avec des fonctions mais si il n'y a que des macros c'est ok
aussi.

D'avances, merci de votre aide.
Salutations





docm
Le #3583301
Une façon de faire:

En A1 mettre 1.
En B2 mettre
=SI(RANG(A2;A$1:A$10;1)<>RANG(A1;A$1:A$10;1);B1+1;B1)
Etirer vers le bas.

Amicalement.

docm

"Vive Excel"
Bonjour.

Voilà, depuis quelques temps, je m'arrache les cheveux avec un truc qui
semble tout simple sur le papier, mais pas pour Mr. Excel.

soit plage A1:A10 avec les valeurs
1 1 4 7 8 10 22 22 22 27

La logique voudrait (et c'est ce que je désire obtenir) que le rang de ces
valeurs dans cette plage donne en mode croissant
1 1 2 3 4 5 6 6 6 7

or la fonction RANG(A(x);plage;1) me donne ceci
1 1 3 4 5 6 7 7 7 10

Peut-être existe-il d'autres moyens pour contourner ce problème, sachant que
c'est la première version que je souhaite obtenir
Je préfèrerais avec des fonctions mais si il n'y a que des macros c'est ok
aussi.

D'avances, merci de votre aide.
Salutations





Daniel
Le #3583231
Bonjour.
Ne fonctionne que si les données sont triées.
Cordialement.
Daniel
"docm"
Une façon de faire:

En A1 mettre 1.
En B2 mettre
=SI(RANG(A2;A$1:A$10;1)<>RANG(A1;A$1:A$10;1);B1+1;B1)
Etirer vers le bas.

Amicalement.

docm

"Vive Excel" news: 43fa1e21$0$18326$
Bonjour.

Voilà, depuis quelques temps, je m'arrache les cheveux avec un truc qui
semble tout simple sur le papier, mais pas pour Mr. Excel.

soit plage A1:A10 avec les valeurs
1 1 4 7 8 10 22 22 22 27

La logique voudrait (et c'est ce que je désire obtenir) que le rang de
ces
valeurs dans cette plage donne en mode croissant
1 1 2 3 4 5 6 6 6 7

or la fonction RANG(A(x);plage;1) me donne ceci
1 1 3 4 5 6 7 7 7 10

Peut-être existe-il d'autres moyens pour contourner ce problème, sachant
que
c'est la première version que je souhaite obtenir
Je préfèrerais avec des fonctions mais si il n'y a que des macros c'est
ok
aussi.

D'avances, merci de votre aide.
Salutations









AV
Le #3583161
| soit plage A1:A10 avec les valeurs
| 1 1 4 7 8 10 22 22 22 27
| La logique voudrait (et c'est ce que je désire obtenir) que le rang de ces
| valeurs dans cette plage donne en mode croissant
| 1 1 2 3 4 5 6 6 6 7

Avec des données triées ou non, pour que "ça le fasse" :
En B1 et recopie --> B10 :
(Validation matricielle par ctrl+maj+entrée)

=RANG(A1;$A$1:$A$10;1)-(NB.SI($A$1:$A$10;"<"&A1)-SOMME((1/NB.SI($A$1:$A$10;$A$1:$A$10))*($A$1:$A$10<A1)))

AV
Publicité
Poster une réponse
Anonyme