/ / Sous-groupe de rang dans la plage dynamique - excel, indexation, excel-formule, correspondance, rang

Rang sous-groupe dans la plage dynamique - excel, indexation, excel-formule, correspondance, rang

J'ai un tableau de comparaison du retour sur investissement comme celui-ci:

Month | ROI | 1  | 2  | 3  |
Jul   | A   | 1% |
Jul   | B   | 3% |
Jul   | C   | 2% |
Jun   | A   | 4% | 6% |
Jun   | B   | 5% | 7% |
Jun   | C   | 6% | 8% |
May   | A   | 2% | 4% | 7% |
May   | C   | 3% | 5% | 6% |

Je souhaite classer chaque mois le retour sur investissement (A, B et C) de chaque produit - afin de ne classer que le pourcentage le plus approprié pour un mois donné.

Mais la gamme doit être dynamique car chaque produit peut avoir une date de lancement différente. Par exemple, le mois de mai n’a pas le produit B.

Donc, le résultat sera:

   Month  | ROI | 1  | 2  | 3  | Rank
Jul   | A   | 1% |    |    | 3
Jul   | B   | 3% |    |    | 1
Jul   | C   | 2% |    |    | 2
Jun   | A   | 4% | 6% |    | 3
Jun   | B   | 5% | 7% |    | 2
Jun   | C   | 6% | 8% |    | 1
May   | A   | 2% | 4% | 7% | 1
May   | C   | 3% | 5% | 6% | 2

Je pense utiliser la fonction Index / Match:

=RANK(INDEX(G3:S3,MATCH(9^99,G3:S3,1)),G3:G5,0)

Mais je ne suis pas sûr de savoir comment rendre dynamique le G3: G5.

Réponses:

0 pour la réponse № 1

Je pense avoir réussi à le faire fonctionner avec la formule suivante dans la colonne de rang:

=RANK(OFFSET(G3,,SUM(--ISNUMBER(G3:S3))-1),
OFFSET(G3,COUNTIF(E3:$E$999,E3)-COUNTIF($E$1:$E$999,E3),
SUM(--ISNUMBER(G3:S3))-1,COUNTIF($E$1:$E$999,E3)))

(en supposant que vos mois sont en E1:E999).

Qu'est-ce que cela fait est regarde G3 et se déplace vers le plus à droite non vide (ISNUMBER) colonne en utilisant OFFSET et considère que cette valeur doit être classée dans la OFFSET tableau où le mois correspond au mois de la ligne en cours.

Séparons la seconde OFFSET formule (en supposant que nous envisageons un Jul rangée):

  • Commencer à G3.
  • Décalage de rangée: nombre de Jul lignes sous la ligne actuelle (inclus) - nombre total de Jul rangées.
  • Décalage de colonne: nombre de cellules contenant des nombres dans la rangée actuelle - 1
  • Hauteur: nombre total de Jul rangées.

Ceci est une formule de tableau, il doit donc être entré en utilisant Ctrl+Décalage+Entrer.

Remarque: La formule suppose que les valeurs les plus à droite sont dans la même colonne si le mois est le même. Ceci est valable dans votre exemple, mais je ne sais pas s’il en va de même pour l’ensemble de vos données. Si ce n’est pas vrai en général, vous pouvez créer une colonne auxiliaire en utilisant le premier. OFFSET morceau de la formule

=OFFSET(G3,,SUM(--ISNUMBER(G3:S3))-1)

pour obtenir votre numéro le plus à droite dans chaque ligne, puis faites votre classement dans cette colonne d'assistance.


0 pour la réponse № 2

Commencez avec un simple classement en sous-groupes en utilisant le Fonction COUNTIFS.

=COUNTIFS(A:A, A2, C:C, "<="&C2)

rang_latest

Modifiez la plage de pourcentages pour saisir le nombre le plus à droite de cette ligne à l'aide de INDICE sur une plage de plusieurs colonnes avec une approximation RENCONTRE.

=COUNTIFS(A:A, A2, INDEX(A:F, 0, MATCH(1E+99, A2:F2)), ">="&INDEX(A:F, ROW(2:2), MATCH(1E+99, A2:F2)))

rank_latest_two

Remplissez si nécessaire.