![](https://cdn.wiki-base.com/9182844/excel_formula_filter_every_nth_row__2.png.webp)
Общая формула
=FILTER(rng,MOD(SEQUENCE(ROWS(rng)),n)=0)
Резюме
Чтобы отфильтровать и извлечь каждую n-ю строку, вы можете использовать формулу, основанную на функции ФИЛЬТР вместе с МОД, СТРОКА и ПОСЛЕДОВАТЕЛЬНОСТЬ. В показанном примере формула в F5:
=FILTER(data,MOD(SEQUENCE(ROWS(data)),3)=0)
где data - именованный диапазон D5: D16. Если n жестко запрограммировано в формуле как 3, функция ФИЛЬТР возвращает каждую третью строку данных.
Объяснение
Функция ФИЛЬТР предназначена для фильтрации и извлечения информации на основе логических критериев. В этом примере цель состоит в том, чтобы извлечь каждую третью запись из показанных данных, но в данных нет информации о номере строки.
Работая изнутри наружу, первый шаг - создать набор номеров строк. Это делается с помощью функции SEQUENCE следующим образом:
SEQUENCE(ROWS(data))
Функция ROW возвращает количество строк в данных именованного диапазона . Используя количество строк, ПОСЛЕДОВАТЕЛЬНОСТЬ возвращает массив из 12 чисел в последовательности:
(1;2;3;4;5;6;7;8;9;10;11;12)
Этот массив возвращается непосредственно в функцию MOD в качестве числового аргумента с жестко заданным числом 3 в качестве делителя. MOD настроен для проверки, делятся ли номера строк на 3, а остаток равен нулю.
MOD(SEQUENCE(ROWS(data)),3)=0 // divisible by 3?
Результатом MOD является массив или значения TRUE и FALSE, например:
(FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE;FALSE;FALSE;TRUE)
Обратите внимание, что значения ИСТИНА соответствуют каждой третьей строке данных. Этот массив доставляется непосредственно в функцию FILTER в качестве аргумента включения. ФИЛЬТР возвращает каждую третью строку данных в качестве окончательного результата.