Excel - Comment renvoyer différentes valeurs de correspondance avec d'autres formules?


2

J'ai le tableau suivant et les formules résultantes: entrez la description de l'image ici

J'ai d'abord le vendeur et le nombre de ventes.

Ensuite, dans les colonnes D et E, je veux savoir qui sont les meilleurs vendeurs.

La formule dans E2 est =LARGE($B$2:$B$11,$D2)et remplie.

Ensuite, je veux connaître les noms des meilleurs vendeurs. La formule dans F2 est =INDEX($A$2:$A$11,MATCH($E2,$B$2:$B$11,0))remplie.

Le problème est que 25 et 15 se présentent chacun deux fois pour Bob et Jeff et Sue et Carl. Mais dans la colonne F, Bob et Sue apparaissent deux fois, car Match revient uniquement pour le premier match. J'ai besoin de 25 pour lister Bob puis Jeff et de 15 pour lister Sue et ensuite Carl.

Je cherchais à vérifier combien de fois la valeur de E apparaît. S'il apparaît plusieurs fois, recherchez quelle instance de cette valeur se trouve à côté de la cellule, puis recherchez cette valeur à partir de la correspondance du nom. Donc pour 25 avec 2 valeurs, F4 est le premier 25 de E, il retournera donc Bob, et F5, le second 25, retournera Jeff.

Cela semble simple, mais je n'ai pas réussi à le mettre en forme. J'essaie d'avoir une seule formule en F donnant les résultats souhaités.

Réponses:


2

Utilisez AGGREGATE en tant que fonction SMALL pour renvoyer la ligne correcte à INDEX:

=INDEX(A:A,AGGREGATE(15,6,ROW($B$2:$B$11)/($B$2:$B$11=$E2),COUNTIFS($E$2:$E2,$E2)))

Le COUNTIFS($E$2:$E2,$E2)retournera 1 pour la première et 2 pour la deuxième instance du nombre, forçant ainsi AGREGATE à renvoyer la première, puis le deuxième nom.


Merci, ça marche très bien. La partie génie était les COUNTIFS sur la plage d’incrémentation.
MichaelE

1
En outre, Aggregate ne fonctionne qu'avec Excel 2010 et les versions ultérieures pour assurer la compatibilité avec la version précédente que j'ai utilisée: =INDEX($A$2:$A$11,SMALL(IF(E2=$B$2:$B$11,ROW($B$2:$B$11)-ROW(INDEX($B$2:$B$11,1,1))+1),SUM(IF(E2=$E$2:$E2,1,0))))mais il faut Ctrl-Maj-Entrée. La somme est à la place du compte, et le petit trouve cette instance de la valeur.
MichaelE

Si @Scott n'y voit pas d'inconvénient, je ne comprends pas comment ROW($B$2:$B$11)/($B$2:$B$11=$E2)devenir une plage pour la fonction PERCENTILE.INC () / / -_-) \
p._phidot_

@ p._phidot_ 15est petit pas centile. Il crée un tableau de nombres et d’erreurs (# DIV / 0). Le 6ignore les erreurs. et le SMALL renvoie le nombre correct.
Scott Craner

Merci Scott .. toujours nouveau dans la small() manipulation des fonctions .. Je savais aggregate()que c’était génial pour ignorer les erreurs .. mais parfois perdu quand il était largement utilisé pour la manipulation de liste. Au moins pour ce cas, je me fais une idée de la façon dont le mécanisme "identifier" et "trier" de la liste fonctionne ici .. Merci beaucoup. J'apprécie beaucoup. (:
p._phidot_

0

Ma petite tentative:

=IF(F1<>F2,INDEX($B$2:$B$13,MATCH(F2,$C$2:$C$13,0)),INDEX(OFFSET($B$2:$B$13,MATCH(G1,$B$2:$B$13,0),0,ROWS($B$2:$B$13)),MATCH(F2,OFFSET($B$2:$B$13,MATCH(G1,$B$2:$B$13,0),1,ROWS($B$2:$B$13)),0)

Merci, cela fonctionne, mais il est limité à seulement 2 d'une certaine valeur étant la même, je pense? La réponse de Scott fonctionne avec n'importe quel cas générique.
MichaelE

Je l'ai testé avec 3 chiffres @ égalité .. et j'ai eu les mêmes résultats que Scott. (:
p._phidot_
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.