Формула на Excel: ФИЛТЪР върху първата или последната n стойности -

Съдържание

Обща формула

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

Обобщение

За да ФИЛТРИТЕ и да извлечете първата или последната n стойности (т.е. първите 3 стойности, първите 5 стойности и т.н.), можете да използвате функцията FILTER заедно с INDEX и SEQUENCE. В показания пример формулата в D5 е:

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

където данните са наименования диапазон B5: B15.

Обяснение

Работейки отвътре навън, използваме функцията SEQUENCE, за да изградим стойност на номер на ред за INDEX по следния начин:

SEQUENCE(3,1,1,1)

Ние искаме SEQUENCE за масив от 3 реда x 1 колона, започвайки от 1, със стойност на стъпка 1. Резултатът е масив като този:

(1;2;3)

което се връща директно на функцията INDEX като аргумент row_num:

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

За да изградим масива за INDEX, използваме функцията FILTER, за да извлечем списък с непразни записи от посочените данни за диапазона (B5: B15) по следния начин:

FILTER(data,data"")

Аргументът на масива е данни, а аргументът за включване е изразът данни "". Това може да се преведе буквално като „връщане на стойности от посочените данни за диапазон, където стойностите в данните не са празни“. Резултатът е масив с 9 стойности като тази:

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

Забележете стойностите, свързани с двете празни клетки, са премахнати. Този масив се връща към функцията INDEX като аргумент на масива.

И накрая, INDEX връща 1-ва, 2-ра и 3-та стойности от масива, върнат от FILTER:

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

Последни n стойности

За да получите последните n стойности с FILTER, използвате същата структура на формулата, като входовете в SEQUENCE са модифицирани, за да се изгради "последен n" масив от номера на редове. Например, за да получите последните 3 непразни стойности в показания пример, можете да използвате формула като тази:

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

Основният трик тук е преброяването на непразни записи в посочените данни за диапазона по следния начин:

SUM(--(data""))

Използваме двойно отрицателно, за да принудим стойностите TRUE FALSE на 1s и 0s, след което използваме функцията SUM, за да получим броя. Резултатът се връща като начален аргумент в SEQUENCE. Доставяме -1 за стъпка към стъпка назад от самото начало.

Също така обвиваме функцията SORT около SEQUENCE, така че върнатият масив е (7; 8; 9), а не (9; 8; 7). Това гарантира, че стойностите се връщат в същия ред, в който се появяват в изходните данни.

Интересни статии...