Фильтрация по датам в Excel: от простого к продвинутому

Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных.hether вы ведёте учёт продаж, планируете проекты или анализируете временные ряды, умение быстро отфильтровать записи по датам экономит часы работы. Но стандартные инструменты Excel не всегда интуитивно понятны: автофильтр ограничен базовыми диапазонами, а ручная сортировка тысячи строк чревата ошибками.

В этой статье мы разберём 5 практических методов фильтрации дат — от элементарного автофильтра до динамических диапазонов с формулами. Вы узнаете, как отсеять данные за конкретный месяц, выделить просроченные задачи или найти записи между двумя датами. Все примеры протестированы в Excel 2019 и Office 365, но подойдут и для версий 2010–2021. Особое внимание уделим ловушкам с форматами дат — именно они становятся причиной 80% ошибок при фильтрации.

1. Базовая фильтрация через автофильтр

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

Как включить:

  • 📌 Выделите заголовок столбца с датами (например, A1:D1).
  • 🔧 Перейдите на вкладку ДанныеФильтр (или нажмите Ctrl+Shift+L).
  • 📅 Нажмите на стрелку вниз в ячейке с датой и выберите один из вариантов:
    • Фильтры по датеЗавтра/На этой неделе/В прошлом месяце;
    • Пользовательский фильтр → укажите диапазон (например, с 01.01.2026 по 31.01.2026).

⚠️ Внимание: Автофильтр учитывает формат ячеек. Если даты хранятся как текст (например, "01.01.2026" вместо 01.01.2026), фильтр не сработает. Проверить формат можно через ГлавнаяФормат ячеекЧисловой формат.

Тип фильтра Пример условия Результат
Равно 05.05.2026 Все записи за 5 мая 2026 года
До 31.12.2023 Данные до конца 2023 года (включительно)
После 01.01.2026 Записи с 1 января 2026 года (включительно)
Между 01.07.2026 и 31.07.2026 Июль 2026 года
Первые 10... 10 самых старых 10 записей с самой ранней датой

2. Расширенный фильтр: гибкие условия

Если автофильтра недостаточно (например, нужно фильтровать по нескольким столбцам одновременно или сохранить результат на другом листе), используйте расширенный фильтр.

Алгоритм:

  1. Создайте диапазон условий — отдельную область с заголовками столбцов и критериями. Например:
    A1:   Дата        | Статус
    

    A2: >01.01.2026 | =Завершено

  2. Перейдите в ДанныеДополнительно (в старых версиях — Расширенный фильтр).
  3. Укажите:
    • 📊 Исходный диапазон — таблица с данными (A1:D1000);
    • 🎯 Диапазон условий — ячейки с критериями (F1:G2);
    • 📤 Поместить результат в диапазон — выберите ячейку для вывода (например, I1).

⚠️ Внимание: Расширенный фильтр не копирует форматирование исходных данных. Если нужны цвета или шрифты, используйте Специальную вставкуФорматы после фильтрации.

Заголовки в диапазоне условий совпадают с исходной таблицей|

Дата введена в формате ячейки "Дата", а не "Текст"|

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

Указаны все обязательные условия (например, "И" вместо "ИЛИ")-->

3. Фильтрация по динамическим датам (сегодня, вчера, текущий месяц)

Чтобы автоматически отображать только актуальные данные (например, задачи на сегодня или продажи за текущий месяц), используйте формулы в диапазоне условий.

Примеры динамических критериев:

  • 📅 Сегодня: =СЕГОДНЯ()
  • 📅 Вчера: =СЕГОДНЯ()-1
  • 📅 Текущий месяц: =И(МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ()); ГОД(A2)=ГОД(СЕГОДНЯ()))
  • 📅 Просроченные задачи: =A2<СЕГОДНЯ()

Как применить:

  1. Создайте столбец с формулой рядом с данными. Например, в E2 введите:
    =И(МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ()); ГОД(A2)=ГОД(СЕГОДНЯ()))

    Это вернёт ИСТИНА для строк текущего месяца.

  2. Добавьте автофильтр и отфильтруйте столбец E по значению ИСТИНА.
Почему формулы не обновляются автоматически?

Если даты не фильтруются корректно, проверьте:

1. Включён ли автоматический пересчёт: ФормулыПараметры вычисленийАвтоматически.

2. Нет ли в ячейках текста вместо дат (проверьте выравнивание: текст выравнивается влево, даты — вправо).

3. Совпадают ли форматы дат в формуле и в данных (например, 01.01.2026 vs 01-янв-24).

4. Фильтрация по недели или дню недели

Для анализа данных по дням недели (например, продажи по понедельникам или рабочие дни) используйте функции ДЕНЬНЕД и НОМНЕДЕЛИ.

Пример 1: Фильтрация по понедельникам.

  • Добавьте вспомогательный столбец с формулой:
    =ДЕНЬНЕД(A2;2)

    где 2 — тип возвращаемого значения (1=воскресенье, 7=суббота).

  • Отфильтруйте столбец по значению 1 (понедельник).

Пример 2: Данные за чётные недели месяца.

  • Используйте формулу:
    =ЧЁТН(НОМНЕДЕЛИ(A2;21))

    где 21 — тип возвращаемого значения (неделя начинается с понедельника).

  • Отфильтруйте по ИСТИНА.
Задача Формула Критерий фильтра
Понедельники =ДЕНЬНЕД(A2;2)=1 ИСТИНА
Выходные (Сб, Вс) =ИЛИ(ДЕНЬНЕД(A2;2)=6; ДЕНЬНЕД(A2;2)=7) ИСТИНА
Первая неделя месяца =ДЕНЬ(A2)<=7 ИСТИНА
Чётные недели =ЧЁТН(НОМНЕДЕЛИ(A2;21)) ИСТИНА

По конкретной дате (например, 15.05.2026)|

По диапазону (между двумя датами)|

Динамические даты (сегодня, текущий месяц)|

По дням недели (понедельники, выходные)|

Другой вариант-->

5. Фильтрация с помощью сводных таблиц

Если нужно не только отфильтровать, но и агрегировать данные (например, посчитать сумму продаж по месяцам), сводная таблица — лучший инструмент.

Пошаговая инструкция:

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

🔹 Продвинутый трюк: Чтобы сгруппировать даты по нестандартным периодам (например, по 10 дней), сначала добавьте вспомогательный столбец с формулой:

=ЦЕЛОЕ((A2-ДАТА(ГОД(A2);1;1))/10)+1

Затем используйте его в сводной таблице вместо исходных дат.

6. Продвинутые техники: Power Query и VBA

Для обработки больших массивов данных (десятки тысяч строк) или автоматизации фильтрации подойдут Power Query и VBA-макросы.

Power Query (Excel 2016+):

  • 📤 Импортируйте данные через ДанныеПолучить данныеИз таблицы/диапазона.
  • 🔧 В редакторе Power Query выберите столбец с датой → Фильтр дат → укажите диапазон.
  • 📥 Нажмите Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel.

VBA (для автоматизации):

Макрос для фильтрации данных за последние 30 дней:

Sub FilterLast30Days()

Dim ws As Worksheet

Dim rng As Range

Set ws = ActiveSheet

Set rng = ws.Range("A1").CurrentRegion

'Добавляем автофильтр, если его нет

If ws.AutoFilterMode = False Then

rng.AutoFilter

End If

'Фильтруем по датам (предполагаем, что даты в первом столбце)

ws.Range("A1").AutoFilter Field:=1, Criteria1:=">=" & Date - 30, Operator:=xlAnd, Criteria2:="<=" & Date

End Sub

⚠️ Внимание: Макросы работают только если даты хранятся в формате Excel, а не как текст. Перед запуском проверьте формат ячеек через Ctrl+1.

Частые ошибки и их решения

Даже опытные пользователи сталкиваются с проблемами при фильтрации дат. Вот самые распространённые ловушки:

  • 🚫 Дата как текст: Если после фильтрации остаются пустые результаты, проверьте формат ячеек. Текстовые "даты" (выровнены влево) не распознаются фильтром. Исправляйте через ДанныеТекст по столбцам.
  • 🚫 Разные форматы: 01.01.2026 и 01-янв-24 — это разные значения для Excel. Приведите данные к единому формату через Формат ячеекДата.
  • 🚫 Пустые ячейки: Автофильтр игнорирует пустые ячейки. Чтобы их показать, снимите все фильтры или используйте расширенный фильтр с условием <>" ".
  • 🚫 Ошибки в формулах: Если динамический фильтр не работает, проверьте синтаксис. Например, =И(A2>ДАТА(2026;1;1); A2<ДАТА(2026;12;31)) — правильно, а =A2>01.01.2026 — нет (нужно =A2>ДАТА(2026;1;1)).
Как найти все пустые даты?

Используйте функцию ЕПУСТО() во вспомогательном столбце:

=ЕПУСТО(A2)

Затем отфильтруйте по ИСТИНА. Это покажет строки, где дата не указана.

FAQ: Ответы на частые вопросы

Можно ли фильтровать даты по времени (часам и минутам)?

Да, но нужно убедиться, что в ячейках хранится полная дата+время (формат дд.мм.гггг чч:мм). Затем используйте пользовательский фильтр с условиями типа >15:30 или <=ДАТАЗНАЧ("01.01.2026 18:00").

Как отфильтровать даты без года (только день и месяц)?

Создайте вспомогательный столбец с формулой, извлекающей день и месяц:

=ДАТА(2000; МЕСЯЦ(A2); ДЕНЬ(A2))

Затем фильтруйте по этому столбцу. Год 2000 выбран произвольно — главное, чтобы формат совпадал.

Почему фильтр не показывает записи за текущий день?

Вероятно, в данных указано только время без даты (например, 14:30 вместо 15.05.2026 14:30). Добавьте сегодняшнюю дату ко времени через формулу:

=СЕГОДНЯ()+A2

где A2 — ячейка со временем.

Как сохранить отфильтрованные данные на новом листе?

Используйте расширенный фильтр:

  1. Укажите диапазон условий (например, даты за март 2026).
  2. В поле Поместить результат в диапазон выберите ячейку на другом листе (например, Лист2!A1).
  3. Поставьте галочку Скопировать в другое место.

Или экспортируйте отфильтрованные данные через КопироватьСпециальная вставкаЗначения.

Можно ли фильтровать даты по кварталам или полугодиям?

Да, двумя способами:

  1. Через сводную таблицу: сгруппируйте даты по кварталам (ГруппировкаКварталы).
  2. Через формулу во вспомогательном столбце:
    =ОКРВВЕРХ(МЕСЯЦ(A2)/3;0)

    Это вернёт номер квартала (1–4). Затем фильтруйте по нужному значению.