Classement des plus grandes données d'un tableau et renvoi d

Salut à tous !

Je voudrais classer les X premières valeurs du tableau "données" et renvoyer la référence correspondant A, B, C…

Donc si on ne prend que les 3 premières lignes du tableau « données », cela donnerait : 37, 18,5, 14, 12,33, etc. Donc B, B, A, B, etc.

La première difficulté est la présence de données égales. Dans ce cas, je souhaiterais que la référence qui sorte soit celle qui correspond à la plus grande valeur de la colonne C.

SI on prend les lignes D et E, cela donnerait : 10, 5, 5, 2,5… donc D, D, E, E… vu que pour les deux données « 5 », D l’emporte vu que dans la colonne C, 2000 est plus grand que 1000.

Dernière difficulté, si comme dans le cas précédent, on a des données égales mais que les valeurs correspondantes de la colonne C sont aussi égales. C’est le cas des deux dernières lignes E et F.

Dans ce cas pas de hiérarchie mais je souhaiterais que les deux références apparaissent.

Donc pour tout le tableau, j’aimerais trouver une formule qui donnerait :

37 18,5 14 12,3 10 9,25 7 5 5 5

B B A B D B A D E F

Un énorme merci d'avance pour votre aide !

jay

19ex3.xls (17.00 Ko)

Bonjour

Je ne pense pas que cela soit faisable avec une formule. Avec un tableau intermédiaire, peut-être?

Cordialement

35ex3.zip (4.62 Ko)

Merci beaucoup pour ta réponse !

Je vais regarder tout cela !

Bonne soirée !

Merci beaucoup pour ta réponse !

Cela a l'air de plutôt bien fonctionner, je vais tester sur d'autres données.

Peux-tu m'expliquer tes deux formules ?

=SI(D2="";"";D2+(((10^2)-LIGNE())/10^9)+($C10/10^9))

Dans un premier temps, tu modifies le tableau en ajoutant à la case d'origine (((10^2)-LIGNE())/10^9)+($C10/10^9)

Quel est le but de cet ajout ?

Dans un second temps tu prends les X plus grandes valeurs

=GRANDE.VALEUR($D10:$I15;COLONNE()-2).

Ca, ça va !

Et enfin, tu utilises la formule

=INDEX($B$1:$B$15;MIN(SI($D$10:$I$15=C17;LIGNE($D$10:$I$15)))).

pour renvoyer les références A, B; C, etc.

Pourrais-tu m'expliquer cette formule ?

Un grand merci d'avance !

Bien à toi,

Jay

Bonjour

je souhaiterais que la référence qui sorte soit celle qui correspond à la plus grande valeur de la colonne C.

En rajoutant aux données une partie infime de la valeur en colonne C, on différencie le 5 de la ligne 13 pour 2000 dans la colonne C de celui de la ligne 14 pour 1000 en col C.

Ligne 13 >> +($C13/10^9) = + 2000/10^9 = 0,000002

Ligne 14 >> +($C14/10^9) = + 1000/10^9 = 0,000001

Donc, ceci ajouté aux valeurs 5 ex-eaquos fait que le 5 de la ligne 5 du premier tableau serait 5+ 0,000002 dans le tableau 2 et le 5 de la ligne 6 du premier tableau serait 5+0,000001 dans le second.

Conséquence: Premier sorti le D, second le E.

Dernière difficulté, si comme dans le cas précédent, on a des données égales mais que les valeurs correspondantes de la colonne C sont aussi égales. C’est le cas des deux dernières lignes E et F.

Dans ce cas pas de hiérarchie mais je souhaiterais que les deux références apparaissent.

ici intervient la première partie de la formule.L'exemple étant les lignes 6 et 7 ou la valeur 5 est présente sur les 2.

l'astuce habituellement utilisée pour différencier les ex-eaquos en colonne est de rajouter une infime valeur identifiant la ligne. Arbitrairement, LIGNE()/10^9.

Ici, le résultat en lignes 14 et 15 équivaut à rajouter au 5 de la ligne 6 la valeur 0, 000000014 et 0, 000000015 au suivant. On voit que si cela correspond à ta demande de faire apparaître les 2 valeurs qui seraient ici dans l'ordre F et E pour ces 2 lignes, cela ne correspond plus à ta demande de voir le E devant le F, soit l'ordre du tableau.

Pour inverser la progressivité, nouvelle "astuce" (10^2-LIGNE())/10^9 qui renvoie 0,000000086 pour la ligne 14 et 0,000000085 pour la ligne 15

ici, GRANDE.VALEUR fera passer en premier la ligne 14 d'où le résultat final E F.

2èle formule

=INDEX($B$1:$B$15;MIN(SI($D$10:$I$15=C17;LIGNE($D$10:$I$15))))

Aide d'Excel

=INDEX(Matrice, No de ligne)

La matrice où se trouvent les données à renvoyer est la colonne B, limitée dans la formule à $B$1:$B$15 (puisque on connaît la limite du tableau)

=MIN(SI($D$10:$I$15=C17;LIGNE($D$10:$I$15)))

renvoie la première ligne dans laquelle se trouve la valeur C17

Cordialement

Merci beaucoup pour tes explications !

Je vais me pencher sur tout ça !

Bien à toi,

Jay

Super j'ai testé ta formule avec plusieurs tableaux de données et cela fonctionne parfaitement !

Un grand merci à toi Amadéus !

Rechercher des sujets similaires à "classement grandes donnees tableau renvoi"