Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

6 réponses
Avatar
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

6 réponses

Avatar
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" a écrit dans le message de 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





Avatar
Daniel
A oublier; ne vaut que pour deux ex aequo.
Daniel
"Daniel" a écrit dans le message de news:

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" a écrit dans le message de
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









Avatar
Vive Excel
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" a écrit dans le message de 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





Avatar
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" a écrit dans le message de 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





Avatar
Daniel
Bonjour.
Ne fonctionne que si les données sont triées.
Cordialement.
Daniel
"docm" a écrit dans le message de news:

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" a écrit dans le message de
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









Avatar
AV
| 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