Formule Excel: FILTRE sur les n premières ou dernières valeurs -

Table des matières

Formule générique

=INDEX(FILTER(data,data""),SEQUENCE(n,1,1,1))

Sommaire

Pour FILTRER et extraire la première ou la dernière n valeurs (c'est-à-dire les 3 premières valeurs, les 5 premières valeurs, etc.), vous pouvez utiliser la fonction FILTRE avec INDEX et SEQUENCE. Dans l'exemple illustré, la formule en D5 est:

=INDEX(FILTER(data,data""),SEQUENCE(3,1,1,1))

data est la plage nommée B5: B15.

Explication

En travaillant de l'intérieur vers l'extérieur, nous utilisons la fonction SEQUENCE pour construire une valeur de numéro de ligne pour INDEX comme ceci:

SEQUENCE(3,1,1,1)

Nous demandons à SEQUENCE un tableau de 3 lignes x 1 colonne, commençant à 1, avec une valeur de pas de 1. Le résultat est un tableau comme celui-ci:

(1;2;3)

qui est renvoyé directement à la fonction INDEX en tant qu'argument row_num:

=INDEX(FILTER(data,data""),(1;2;3))

Pour construire le tableau pour INDEX, nous utilisons la fonction FILTER pour récupérer une liste d'entrées non vides à partir des données de plage nommées (B5: B15) comme ceci:

FILTER(data,data"")

L'argument tableau est data et l'argument include est l'expression data "". Cela peut être traduit littéralement par «des valeurs de retour à partir des données de plage nommées où les valeurs des données ne sont pas vides». Le résultat est un tableau avec 9 valeurs comme ceci:

("Atlanta";"Chicago";"Dallas";"Denver";"Los Angeles";"Miami";"New York";"Seattle";"Minneapolis")

Les valeurs de notification associées aux deux cellules vides ont été supprimées. Ce tableau est renvoyé à la fonction INDEX en tant qu'argument de tableau.

Enfin, INDEX renvoie les 1ère, 2ème et 3ème valeurs du tableau retourné par FILTER:

("Atlanta";"Chicago";"Dallas")

N dernières valeurs

Pour obtenir les n dernières valeurs avec FILTER, vous utilisez la même structure de formule, avec les entrées de SEQUENCE modifiées pour construire un "dernier n" tableau de numéros de ligne. Par exemple, pour obtenir les 3 dernières valeurs non vides dans l'exemple illustré, vous pouvez utiliser une formule comme celle-ci:

=INDEX(FILTER(data,data""),SORT(SEQUENCE(3,1,SUM(--(data"")),-1)))

L'astuce principale ici consiste à compter les entrées non vides dans les données de plage nommées comme ceci:

SUM(--(data""))

Nous utilisons un double négatif pour forcer les valeurs TRUE FALSE à 1 et 0, puis nous utilisons la fonction SOMME pour obtenir le nombre. Le résultat est renvoyé comme argument de départ dans SEQUENCE. Nous fournissons -1 pour que l'étape recule depuis le début.

Nous enroulons également la fonction SORT autour de SEQUENCE afin que le tableau retourné soit (7; 8; 9) et non (9; 8; 7). Cela garantit que les valeurs sont renvoyées dans le même ordre qu'elles apparaissent dans les données source.

Articles intéressants...