![](https://cdn.wiki-base.com/1591239/excel_formula_filter_on_first_or_last_n_values__2.png.webp)
Обща формула
=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). Това гарантира, че стойностите се връщат в същия ред, в който се появяват в изходните данни.