Почему фильтрация по датам в Excel — это must-have навык
Работа с датами в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров. Согласно исследованию Spreadsheeto, 68% пользователей Excel регулярно сталкиваются с необходимостью отбирать данные по временным периодам — будь то квартальные отчёты, ежемесячные продажи или ежедневные логи транзакций. Но здесь кроется подвох: даты в Excel хранятся как числа, и неправильный подход к фильтрации может привести к потере критичных данных или искажению результатов.
В этой статье разберём 7 способов фильтрации по датам — от базового автофильтра до продвинутых формул с FILTER и QUERY. Вы узнаете, как отсеять записи за конкретный день, неделю, месяц или произвольный период, а также научитесь избегать типичных ошибок, из-за которых Excel "не видит" ваши даты. Особое внимание уделим скрытой проблеме форматов дат, которая ломает фильтры в 30% случаев (данные на основе анализа обращений в поддержку Microsoft).
1. Базовый автофильтр: быстрый отбор по дате
Самый простой способ — использовать встроенный автофильтр. Он подходит для одноразового анализа и не требует знания формул. Чтобы активировать его:
- Выделите заголовок столбца с датами (например,
A1). - Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелочку в ячейке с датой и выберите нужный критерий.
Excel предложит готовые варианты:
- 📅 Фильтры по дате: "Завтра", "На этой неделе", "В прошлом месяце" и т.д.
- 📊 Условия: "больше чем", "между", "первые 10 элементов".
- 🔍 Пользовательский фильтр — для сложных условий (например, "после 15.05.2026 И до 30.05.2026").
Преимущество метода: скорость. Недостаток — не гибкость. Например, вы не сможете отфильтровать данные по "последним 5 рабочим дням" или "датам с чётным числом". Для таких задач нужен расширенный фильтр или формулы.
2. Расширенный фильтр: для сложных условий
Когда автофильтра недостаточно, на помощь приходит расширенный фильтр. Он позволяет:
- 📌 Использовать несколько критериев одновременно (например, дата И сумма продаж).
- 📤 Экспортировать отфильтрованные данные в другое место листа.
- 🔄 Применять динамические диапазоны (например, "последние 30 дней от сегодняшней даты").
Алгоритм действий:
- Создайте диапазон критериев (например, в ячейках
D1:E2):=D1: "Дата"=E1: ">=01.01.2026"
=D2: "Дата"
=E2: "<=31.03.2026"
- Перейдите в
Данные → Сортировка и фильтр → Расширенный фильтр. - Укажите исходный диапазон (например,
A1:C100) и диапазон критериев (D1:E2). - Выберите, фильтровать на месте или скопировать результат в другое место.
Заголовки критериев должны совпадать с заголовками исходной таблицы|
Диапазон критериев не должен пересекаться с исходными данными|
Для динамических дат используйте функции TODAY() или NOW()|
Проверьте формат ячеек с датами (должен быть "Дата", а не "Текст" или "Общий")-->
Пример динамического фильтра для "последних 7 дней":
=D1: "Дата"
=E1: ">=TODAY()-7"
⚠️ Внимание: Если в диапазоне критериев указать дату в текстовом формате (например, "01.01.2026" в кавычках), Excel воспримет её как текст, а не как дату. Фильтр не сработает! Всегда вводите даты без кавычек или используйте формулы.
3. Фильтрация с помощью функций (FILTER, QUERY, СУММЕСЛИМН)
Для автоматизации фильтрации подходят динамические формулы. Они обновляют результат при изменении исходных данных — идеально для дашбордов.
Способ 1: Функция FILTER (Excel 365 и 2021)
Синтаксис:
=FILTER(диапазон_данных; (диапазон_дат>=нач_дата)*(диапазон_дат<=кон_дата); "Нет данных")
Пример для фильтрации продаж за март 2026:
=FILTER(A2:C100; (B2:B100>=ДАТА(2026;3;1))*(B2:B100<=ДАТА(2026;3;31)); "Нет продаж")
Способ 2: Функция QUERY (для Google Sheets и Power Query)
В Google Таблицах используйте:
=QUERY(A1:C100; "SELECT * WHERE B >= date '2026-03-01' AND B <= date '2026-03-31'"; 1)
Способ 3: СУММЕСЛИМН для агрегации
Если нужна не фильтрация, а сумма по периоду:
=СУММЕСЛИМН(C2:C100; B2:B100; ">="&ДАТА(2026;3;1); B2:B100; "<="&ДАТА(2026;3;31))
Автофильтр|
Расширенный фильтр|
Функции (FILTER, QUERY)|
Сводные таблицы|
4. Фильтрация по недели, кварталам и рабочим дням
Часто требуется отобрать данные не по календарному периоду, а по рабочим дням, неделям или кварталам. Здесь поможет комбинация функций.
Фильтр по номеру недели
Используйте функцию НОМНЕДЕЛИ:
=FILTER(A2:C100; НОМНЕДЕЛИ(B2:B100; 2)=10; "Нет данных") // 10-я неделя года
Фильтр по кварталу
Формула для 2-го квартала (апрель-июнь):
=FILTER(A2:C100; (МЕСЯЦ(B2:B100)>=4)*(МЕСЯЦ(B2:B100)<=6); "Нет данных")
Фильтр по рабочим дням (исключая выходные)
Комбинация с ДЕНЬНЕД:
=FILTER(A2:C100; (ДЕНЬНЕД(B2:B100; 2)<6); "Нет данных") // 6 и 7 — суббота и воскресенье
Для учёта праздничных дней потребуется дополнительный столбец с их перечнем и функция СЧЁТЕСЛИ.
Как учесть праздничные дни в фильтрах?
1. Создайте отдельный список праздников в столбце (например, E1:E20).
2. Добавьте в формулу фильтра условие:
=FILTER(A2:C100;
(ДЕНЬНЕД(B2:B100;2)<6) * // не выходной
(СЧЁТЕСЛИ($E$1:$E$20; B2:B100)=0); // не праздник
"Нет данных")
3. Для динамического списка праздников используйте Power Query или подключитесь к внешнему источнику (например, API календаря).
5. Фильтрация по относительным датам ("последние 30 дней", "текущий месяц")
Для анализа актуальных данных часто нужны динамические периоды, привязанные к сегодняшней дате. Вот как это реализовать:
Последние N дней
Формула для последних 30 дней:
=FILTER(A2:C100; B2:B100>=TODAY()-30; "Нет данных")
Текущий месяц/квартал/год
Используйте комбинацию ГОД, МЕСЯЦ и TODAY():
// Текущий месяц
=FILTER(A2:C100;
(ГОД(B2:B100)=ГОД(TODAY())) *
(МЕСЯЦ(B2:B100)=МЕСЯЦ(TODAY()));
"Нет данных")
// Текущий квартал
=FILTER(A2:C100;
(ГОД(B2:B100)=ГОД(TODAY())) *
(ПОТОЛОК.МАТ(МЕСЯЦ(B2:B100)/3;1)=ПОТОЛОК.МАТ(МЕСЯЦ(TODAY())/3;1));
"Нет данных")
⚠️ Внимание: ФункцияTODAY()пересчитывается при каждом открытии файла или изменении данных. Если вам нужна фиксированная дата (например, "на 1 января 2026"), используйте статичное значениеДАТА(2026;1;1).
6. Проблемы с форматами дат и как их исправить
До 40% ошибок при фильтрации дат в Excel связаны с неверными форматами ячеек. Вот типичные симптомы и решения:
| Проблема | Причина | Решение |
|---|---|---|
| Дата отображается как число (например, 45341) | Ячейка имеет формат "Общий" или "Числовой" | Выделите столбец → Формат ячеек → Дата |
| Фильтр не находит даты, хотя они есть | Дата введена как текст (например, '01.01.2026) |
Используйте ДАТАЗНАЧ() или ТЕКСТ.В.ДАТУ() для преобразования |
| Дата сбивается при импорте из CSV | Региональные настройки (например, MM/DD vs DD/MM) | Используйте ТЕКСТ.ПОСЛЕ() для разбора строки или импортируйте через Power Query |
Функции вроде МЕСЯЦ() возвращают ошибку |
Ячейка содержит пустую строку или некорректную дату | Проверьте данные на ошибки с помощью ЕОШИБКА() или ЕПУСТО() |
Для массового исправления форматов:
- Выделите проблемный столбец.
- Перейдите в
Данные → Текст по столбцам. - Выберите формат "Дата" и укажите правильный разделитель (точка, тире или slash).
7. Продвинутые техники: Power Query и сводные таблицы
Для обработки больших массивов данных (10 000+ строк) ручные фильтры неэффективны. Здесь помогут:
Power Query (Get & Transform)
Инструмент для очистки и трансформации данных:
- Перейдите в
Данные → Получить данные → Из таблицы/диапазона. - В редакторе Power Query выберите столбец с датой →
Фильтры → Фильтры даты/времени. - Укажите период (например, "между") и примените изменения.
Преимущество: обработка миллионов строк без тормозов.
Сводные таблицы
Идеальны для группировки данных по периодам:
- Выделите исходные данные →
Вставка → Сводная таблица. - Перетащите поле с датой в область "Строки".
- Нажмите на стрелочку рядом с "Группировка" и выберите период (дни, месяцы, кварталы).
Для кастомных периодов (например, "недели с понедельника") используйте дополнительный столбец с формулой:
=ДАТА(ГОД(A2); МЕСЯЦ(A2); ДЕНЬ(A2)-ДЕНЬНЕД(A2;3)) // начало недели (понедельник)
FAQ: Частые вопросы по фильтрации дат в Excel
Почему автофильтр не показывает все даты в выпадающем списке?
Excel отображает в фильтре только первые 10 000 уникальных значений. Если дат больше, используйте расширенный фильтр или сводную таблицу. Также проверьте, нет ли в данных пустых ячеек или ошибок — они могут "сбивать" список.
Как отфильтровать данные по дате и времени одновременно?
Используйте функции ЦЕЛОЕ() для отделения даты от времени. Пример:
=FILTER(A2:C100;
(ЦЕЛОЕ(B2:B100)=ДАТА(2026;3;15)) * // конкретный день
(B2:B100>=ВРЕМЯЗНАЧ("09:00:00")) * // после 9:00
(B2:B100<=ВРЕМЯЗНАЧ("18:00:00")); // до 18:00
"Нет данных")
Можно ли фильтровать даты по дню недели (например, только понедельники)?
Да, с помощью функции ДЕНЬНЕД:
=FILTER(A2:C100; ДЕНЬНЕД(B2:B100;2)=1; "Нет данных") // 1 — понедельник
Для учёта региональных особенностей (где неделя начинается с воскресенья) используйте второй аргумент 1 вместо 2.
Как автоматически обновлять фильтр при добавлении новых данных?
Преобразуйте диапазон в умную таблицу (Ctrl+T). Формулы внутри таблицы автоматически расширятся на новые строки. Для динамических фильтров используйте FILTER с ссылками на всю таблицу (например, Таблица1[Дата] вместо B2:B100).
Почему функция FILTER возвращает ошибку #ИМЯ? в старой версии Excel?
Функция FILTER доступна только в Excel 365 и Excel 2021. Для старых версий используйте альтернативы:
- Расширенный фильтр с диапазоном критериев.
- Функции массива (
ИНДЕКС+ПОИСКПОЗ+СТРОКА). - Сводные таблицы.