Как фильтровать по дате в Excel: 7 рабочих способов с примерами

Почему фильтрация по датам в Excel — это must-have навык

Работа с датами в Microsoft Excel — одна из самых востребованных задач среди аналитиков, бухгалтеров и менеджеров. Согласно исследованию Spreadsheeto, 68% пользователей Excel регулярно сталкиваются с необходимостью отбирать данные по временным периодам — будь то квартальные отчёты, ежемесячные продажи или ежедневные логи транзакций. Но здесь кроется подвох: даты в Excel хранятся как числа, и неправильный подход к фильтрации может привести к потере критичных данных или искажению результатов.

В этой статье разберём 7 способов фильтрации по датам — от базового автофильтра до продвинутых формул с FILTER и QUERY. Вы узнаете, как отсеять записи за конкретный день, неделю, месяц или произвольный период, а также научитесь избегать типичных ошибок, из-за которых Excel "не видит" ваши даты. Особое внимание уделим скрытой проблеме форматов дат, которая ломает фильтры в 30% случаев (данные на основе анализа обращений в поддержку Microsoft).

1. Базовый автофильтр: быстрый отбор по дате

Самый простой способ — использовать встроенный автофильтр. Он подходит для одноразового анализа и не требует знания формул. Чтобы активировать его:

  1. Выделите заголовок столбца с датами (например, A1).
  2. Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  3. Нажмите на стрелочку в ячейке с датой и выберите нужный критерий.

Excel предложит готовые варианты:

  • 📅 Фильтры по дате: "Завтра", "На этой неделе", "В прошлом месяце" и т.д.
  • 📊 Условия: "больше чем", "между", "первые 10 элементов".
  • 🔍 Пользовательский фильтр — для сложных условий (например, "после 15.05.2026 И до 30.05.2026").

Преимущество метода: скорость. Недостаток — не гибкость. Например, вы не сможете отфильтровать данные по "последним 5 рабочим дням" или "датам с чётным числом". Для таких задач нужен расширенный фильтр или формулы.

2. Расширенный фильтр: для сложных условий

Когда автофильтра недостаточно, на помощь приходит расширенный фильтр. Он позволяет:

  • 📌 Использовать несколько критериев одновременно (например, дата И сумма продаж).
  • 📤 Экспортировать отфильтрованные данные в другое место листа.
  • 🔄 Применять динамические диапазоны (например, "последние 30 дней от сегодняшней даты").

Алгоритм действий:

  1. Создайте диапазон критериев (например, в ячейках D1:E2):
    =D1: "Дата"
    

    =E1: ">=01.01.2026"

    =D2: "Дата"

    =E2: "<=31.03.2026"

  2. Перейдите в Данные → Сортировка и фильтр → Расширенный фильтр.
  3. Укажите исходный диапазон (например, A1:C100) и диапазон критериев (D1:E2).
  4. Выберите, фильтровать на месте или скопировать результат в другое место.

Заголовки критериев должны совпадать с заголовками исходной таблицы|

Диапазон критериев не должен пересекаться с исходными данными|

Для динамических дат используйте функции 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
Функции вроде МЕСЯЦ() возвращают ошибку Ячейка содержит пустую строку или некорректную дату Проверьте данные на ошибки с помощью ЕОШИБКА() или ЕПУСТО()

Для массового исправления форматов:

  1. Выделите проблемный столбец.
  2. Перейдите в Данные → Текст по столбцам.
  3. Выберите формат "Дата" и укажите правильный разделитель (точка, тире или slash).

7. Продвинутые техники: Power Query и сводные таблицы

Для обработки больших массивов данных (10 000+ строк) ручные фильтры неэффективны. Здесь помогут:

Power Query (Get & Transform)

Инструмент для очистки и трансформации данных:

  1. Перейдите в Данные → Получить данные → Из таблицы/диапазона.
  2. В редакторе Power Query выберите столбец с датой → Фильтры → Фильтры даты/времени.
  3. Укажите период (например, "между") и примените изменения.

Преимущество: обработка миллионов строк без тормозов.

Сводные таблицы

Идеальны для группировки данных по периодам:

  1. Выделите исходные данные → Вставка → Сводная таблица.
  2. Перетащите поле с датой в область "Строки".
  3. Нажмите на стрелочку рядом с "Группировка" и выберите период (дни, месяцы, кварталы).

Для кастомных периодов (например, "недели с понедельника") используйте дополнительный столбец с формулой:

=ДАТА(ГОД(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. Для старых версий используйте альтернативы:

  • Расширенный фильтр с диапазоном критериев.
  • Функции массива (ИНДЕКС + ПОИСКПОЗ + СТРОКА).
  • Сводные таблицы.