Excel и Google Workspace / Формулы Google Таблиц
Google Sheets: FILTER для точного отбора строк
Функция FILTER возвращает все строки из диапазона, которые удовлетворяют условиям. Это удобно для отфильтрованных отчётов, без ручной сортировки и промежуточных формул. FILTER подходит, когда нужно оставить строки по одному или нескольким условиям без ручного копирования данных.
Формула
Обозначения
- $range$
- исходный диапазон строк
- $condition$
- логическое условие отбора
- $if_empty$
- сообщение или пустой результат, если строк нет
Условия применения
- Диапазон должен быть прямоугольным и иметь одинаковое количество строк в каждом столбце.
- Каждый критерий должен быть логическим массивом той же высоты, что и фильтруемый диапазон.
- Если все строки не подходят, функция вернёт #N/A.
Ограничения
- Функция не поддерживает скрытие дубликатов сама по себе.
- Требует, чтобы в выходной области не было «занятых» ячеек, иначе вернёт ошибку.
- Для очень больших массивов может быть медленной без нормальной структуры данных.
Подробное объяснение
FILTER проходит по каждой строке и проверяет логическое условие по всем критериям. Результат выталкивается сразу в виде массива, поэтому удобен для панелей мониторинга и промежуточных витрин данных.
Смысл страницы — показать рабочий сценарий, ограничения и поведение формулы в живой таблице. Например, из таблицы заказов можно вывести только строки со статусом "Оплачен" и суммой больше заданного порога. Пользователь меняет исходную таблицу, а результат автоматически пересчитывается, поэтому страница должна показывать не только синтаксис, но и поведение динамического диапазона. В отличие от простого перечисления аргументов, здесь важно понимать, как формула меняет диапазон результата, что происходит при пустых строках и как она сочетается с другими функциями Google Таблиц.
Как пользоваться формулой
- Подготовьте базовый прямоугольный диапазон данных.
- Сформулируйте одно или несколько условий и свяжите их через запятую.
- Проверьте, чтобы справа/снизу от формулы было свободное место для вывода всего массива.
- При пустом результате дополните `IFERROR(..., "Нет данных")`.
Историческая справка
Функция FILTER стала частью роста массивных вычислений в Google Sheets и используется для построения динамических отчётов без ручных фильтров.
Функция рассматривается как часть экосистемы Google Sheets и Google Docs Editors. Исторический блок здесь полезен не как биография автора, а как контекст появления облачных таблиц, совместной работы и динамических массивов, которые изменили привычный способ строить отчеты.
Историческая линия формулы
Документация функции FILTER размещена в официальной справке Google Sheets. У функций Google Таблиц нет корректного единоличного автора. Их развитие связано с продуктовой эволюцией электронных таблиц, SQL-подобных запросов, динамических массивов и облачной совместной работы, поэтому атрибуция описывает технологическую линию, а не персональное открытие.
Пример
При диапазоне A2:F200 и статусе в B и сумме в C формула `=FILTER(A2:F200, B2:B200="Продажа", C2:C200>10000)` покажет только строки продаж свыше 10 000. Например, из таблицы заказов можно вывести только строки со статусом "Оплачен" и суммой больше заданного порога. Пользователь меняет исходную таблицу, а результат автоматически пересчитывается, поэтому страница должна показывать не только синтаксис, но и поведение динамического диапазона.
Частая ошибка
Самые частые ошибки: неверная высота массивов в условиях, ссылками на пустые диапазоны или отсутствие права на spill-вывод — тогда формула ругается. Частая ошибка — передать условие другого размера, чем фильтруемый диапазон. Еще одна проблема возникает, когда FILTER возвращает пустой результат: для пользовательской таблицы лучше заранее обернуть формулу в IFERROR или показать понятное сообщение.
Практика
Задачи с решением
Найти только оплаченные заказы
Условие. В B2:B20 пометка статуса, в C2:C20 — сумма.
Решение. =FILTER(A2:G20, B2:B20="Оплачен")
Ответ. =FILTER(A2:G20, B2:B20="Оплачен")
Найти заказы со статусом «Оплачен» и суммой больше 3000
Условие. B2:B20 — статус, C2:C20 — сумма.
Решение. =FILTER(A2:G20, (B2:B20="Оплачен")*(C2:C20>3000))
Ответ. =FILTER(A2:G20, (B2:B20="Оплачен")*(C2:C20>3000))
Дополнительные источники
- Google Docs Editors Help: FILTER function - https://support.google.com/docs/answer/3093197?hl=en
- Google Docs Editors Help: Google Sheets function list - https://support.google.com/docs/table/25273?hl=en
- Google Docs Editors Help: Google Sheets function list
- Google Docs Editors Help: function documentation for the corresponding Google Sheets function
Связанные формулы
Excel и Google Workspace
QUERY в Google Таблицах: базовый SELECT
QUERY выполняет запрос к диапазону Google Таблиц на языке, похожем на SQL. Базовый SELECT выбирает нужные столбцы и строки по условию.
Excel и Google Workspace
Google Sheets: ARRAYFORMULA для массовых вычислений
ARRAYFORMULA автоматически применяет формулу к диапазону без копирования вниз по каждой строке, сохраняя логику в одной ячейке. ARRAYFORMULA распространяет вычисление на диапазон и убирает необходимость копировать формулу вниз.
Excel и Google Workspace
Google Sheets: SORT для многоуровневой сортировки
С помощью SORT можно сортировать диапазон сразу по нескольким колонкам с отдельным направлением сортировки для каждого ключа. SORT нужен для динамической сортировки диапазона без изменения исходной таблицы.