Фильтр по дате в Excel: 5 способов отбора данных с примерами

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

Многие пользователи ограничиваются базовым автофильтром, даже не подозревая о возможностях расширенной фильтрации, условного форматирования по датам или динамических диапазонов. Эта статья раскроет все нюансы — от простого отбора дат до создания интерактивных отчетов с помощью ТАБЛИЦ и Power Query.

Мы разберем реальные кейсы: как отфильтровать данные за последний месяц, исключить выходные дни, или найти просроченные задачи. А еще вы узнаете, почему иногда Excel "не видит" ваши даты и как это исправить.

———

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

Автофильтр — самый простой способ отбора данных, но даже он скрывает несколько полезных фишек. Чтобы его активировать, выделите заголовок столбца с датами и нажмите Данные → Фильтр (или сочетание Ctrl+Shift+L). Рядом с заголовком появится значок воронки — кликните по нему.

В выпадающем меню вы увидите:

  • 📅 Фильтр по датам — быстрый доступ к стандартным диапазонам (сегодня, вчера, следующий месяц и т.д.)
  • 📊 Числовые фильтры — здесь даты рассматриваются как числа (полезно для диапазонов)
  • 🔍 Текстовые фильтры — если ваши даты хранятся как текст (ошибка!)
  • Выделение цветом — если использовалось условное форматирование

Например, чтобы показать только записи за текущий квартал, выберите Фильтр по датам → В этом квартале. А для произвольного диапазона (скажем, с 15 марта по 20 апреля) используйте Числовые фильтры → Между....

Обратите внимание: автофильтр работает только с правильно распознанными датами. Если вы импортировали данные из CSV или другой системы, проверьте формат ячеек. Частая ошибка — даты в виде "01-05-2026" (текст) вместо настоящего формата даты.

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

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

Алгоритм настройки:

  1. Создайте таблицу с данными (например, в диапазоне A1:D100)
  2. Выделите область для критериев (например, F1:G2) и введите заголовки столбцов (должны совпадать с оригинальной таблицей)
  3. В ячейках под заголовками укажите условия. Например:
    =И(A2>=ДАТА(2026;5;1); A2<=ДАТА(2026;5;31))

    для мая 2026 года

  4. Перейдите в Данные → Сортировка и фильтр → Расширенный фильтр
  5. Укажите исходный диапазон и диапазон критериев, выберите "Фильтровать список на месте" или "Скопировать результат в другое место"

Пример сложного условия: найти все записи, где дата попадает в рабочие дни мая 2026 года (исключая выходные). Для этого используйте формулу:

=И(A2>=ДАТА(2026;5;1); A2<=ДАТА(2026;5;31); ДЕНЬНЕД(A2;2)<6)

Где ДЕНЬНЕД(A2;2) возвращает номер дня недели (1-7, где 6 и 7 — суббота и воскресенье).

Как сохранить критерии фильтра для повторного использования?

Создайте отдельный лист "Критерии" и храните там часто используемые условия. Затем в расширенном фильтре просто ссылайтесь на этот диапазон. Можно даже защитить лист от изменений, оставив только ячейки с датами редактируемыми.

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

Сводные таблицы (Вставка → Сводная таблица) предлагают самый гибкий способ анализа данных по датам. Здесь можно группировать даты по годам, кварталам, месяцам или даже дням недели — и всё это в два клика.

Инструкция по настройке:

  • 📌 Выделите исходные данные (включая заголовки)
  • 📊 Создайте сводную таблицу (Вставка → Сводная таблица → Новый лист)
  • 🗓️ Перетащите поле с датой в область "Строки"
  • 🔧 Кликните правой кнопкой по любой дате в сводной таблице → "Группировать"
  • 📅 Выберите нужные интервалы (дни, месяцы, кварталы)

Преимущество сводных таблиц — динамическая фильтрация. Добавьте срезы (Анализ → Вставить срез), чтобы создавать интерактивные отчеты. Например, срез по годам позволит мгновенно переключаться между 2023 и 2026 годами.

Тип группировки Пример отображения Когда использовать
Дни 01.05.2026, 02.05.2026 Анализ ежедневных данных (продажи, посещаемость)
Месяцы Май 2026, Июнь 2026 Сравнение помесячной динамики
Кварталы Кв1 2026, Кв2 2026 Отчетность по кварталам
Годы 2023, 2026 Многолетние тренды
Дни недели Понедельник, Вторник Анализ по дням недели (например, пиковые дни продаж)

Совет: если ваши даты не группируются автоматически, проверьте, что в исходных данных нет пустых ячеек или текста вместо дат. Сводные таблицы чувствительны к формату данных!

📊 Какой инструмент для фильтрации дат вы используете чаще?
Автофильтр
Расширенный фильтр
Сводные таблицы
Power Query
Другой

4. Фильтрация с помощью Power Query: для больших данных

Когда данных тысячи строк, а условия фильтрации сложные, на помощь приходит Power Query (в Excel 2016+ и 365). Этот инструмент позволяет не только фильтровать, но и преобразовывать данные перед загрузкой в Excel.

Как отфильтровать даты в Power Query:

  1. Выделите исходные данные и нажмите Данные → Получение данных → Из таблицы/диапазона
  2. В открывшемся редакторе Power Query выберите столбец с датой
  3. Нажмите на стрелочку рядом с заголовком столбца → выберите нужный фильтр (например, "После") и укажите дату
  4. Для сложных условий используйте Добавить столбец → Настраиваемый столбец с формулой на языке M. Например, чтобы оставить только рабочие дни:
    if Date.DayOfWeek([Дата]) < 5 then [Дата] else null
  5. Нажмите Главная → Закрыть и загрузить, чтобы вернуть отфильтрованные данные в Excel

Power Query сохраняет все шаги преобразования, поэтому при обновлении исходных данных (например, при добавлении новых строк) вам не придется настраивать фильтр заново — достаточно кликнуть "Обновить все" (Данные → Обновить все).

Пример использования: у вас есть данные о продажах за 5 лет, и нужно оставить только транзакции за последние 12 месяцев, исключая праздничные дни. В Power Query это делается за 3 шага:

  • 📅 Фильтр по дате (последние 12 месяцев)
  • 🎉 Исключение праздников (через настраиваемый столбец)
  • 📊 Группировка по месяцам для анализа

5. Динамические диапазоны дат: формулы для автоматического обновления

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

Способ 1: Именованный диапазон для "последних 30 дней"

  1. Перейдите в Формулы → Диспетчер имен → Создать
  2. Введите имя, например, Последние30дней
  3. В поле "Диапазон" введите формулу:
    =ФИЛЬТР(A2:A100; A2:A100>=СЕГОДНЯ()-30; "Нет данных")

    (для Excel 365) или классическую формулу массива:

    =ЕСЛИОШИБКА(ИНДЕКС(A2:A100; ПОИСКПОЗ(ИСТИНА; (A2:A100>=СЕГОДНЯ()-30) (A2:A100<>"") ;0)):ИНДЕКС(A2:A100; ПОИСКПОЗ(ИСТИНА; (A2:A100<СЕГОДНЯ()) (A2:A100<>"") ;0)-1)); "Нет данных")
  4. Теперь при фильтрации ссылайтесь на имя Последние30дней

Способ 2: Условное форматирование для визуальной фильтрации

Если вам нужно просто выделить актуальные даты (например, просроченные задачи), используйте:

  1. Выделите столбец с датами
  2. Перейдите в Главная → Условное форматирование → Создать правило
  3. Выберите "Использовать формулу..." и введите:
    =A1<СЕГОДНЯ()

    (где A1 — первая ячейка диапазона)

  4. Задайте формат (например, красный фон) и нажмите ОК

Теперь все даты раньше сегодняшней будут подсвечены. Этот метод не скрывает строки, но визуально выделяет нужные данные.

✔️ Данные отсортированы по дате (важно для корректной работы ФИЛЬТР)

✔️ Нет пустых ячеек в столбце с датами

✔️ Формат ячеек — "Дата", а не "Текст" или "Общий"

✔️ Для формул массива используется Excel 365 или 2019+ (для ФИЛЬТР)

-->

6. Типичные ошибки и их решения

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

Проблема 1: Фильтр не показывает нужные даты, хотя они есть в данных.

⚠️ Внимание: Если ваши даты хранятся как текст (например, "01.05.2026" вместо настоящей даты), Excel не сможет их правильно отфильтровать. Проверьте формат ячеек (Ctrl+1) и при необходимости конвертируйте текст в даты с помощью ДАТАЗНАЧ() или Power Query.

Проблема 2: При группировке в сводной таблице даты разбиваются на годы/месяца неправильно.

  • 🔹 Убедитесь, что в исходных данных нет пустых ячеек или ошибочных значений (например, "N/A")
  • 🔹 Проверьте региональные настройки Excel: в некоторых локалях разделителем даты служит "." (точка), в других — "/" (косая черта)
  • 🔹 Если даты импортированы из внешнего источника, попробуйте обновить соединение (Данные → Обновить все)

Проблема 3: Расширенный фильтр не работает с формулами в критериях.

⚠️ Внимание: Формулы в диапазоне критериев должны возвращать ИСТИНА/ЛОЖЬ. Если формула возвращает ошибку (например, #ЗНАЧ!), фильтр не сработает. Используйте ЕЧИСЛО() или ЕОШИБКА() для обработки исключений.

Проблема 4: После фильтрации часть данных "исчезает", хотя должна остаться.

  • 🔹 Проверьте, не применены ли другие фильтры к таблице (например, скрытие строк вручную)
  • 🔹 Убедитесь, что диапазон данных зафиксирован правильно (особенно важно для сводных таблиц)
  • 🔹 Если используете Power Query, обновите запрос (Данные → Обновить все)

7. Продвинутые техники: фильтрация с помощью VBA

Для автоматизации рутинных задач можно использовать макросы. Например, этот код фильтрует данные за текущий месяц и копирует результат на новый лист:

Sub FilterCurrentMonth()

Dim wsSource As Worksheet, wsResult As Worksheet

Dim rngData As Range, rngCriteria As Range

Dim lastRow As Long, criteriaRange As String

' Настройка исходных данных

Set wsSource = ThisWorkbook.Sheets("Данные") ' имя листа с данными

lastRow = wsSource.Cells(wsSource.Rows.Count, "A").End(xlUp).Row

Set rngData = wsSource.Range("A1:D" & lastRow) ' диапазон с данными (A - столбец с датами)

' Создание листа для результатов

On Error Resume Next

Application.DisplayAlerts = False

ThisWorkbook.Sheets("Результат").Delete

Application.DisplayAlerts = True

On Error GoTo 0

Set wsResult = ThisWorkbook.Sheets.Add(After:=wsSource)

wsResult.Name = "Результат"

' Настройка критериев (текущий месяц)

criteriaRange = "F1:F2"

wsSource.Range(criteriaRange).Clear

wsSource.Range("F1").Value = "Дата" ' заголовок должен совпадать с исходной таблицей

wsSource.Range("F2").Formula = ">=ДАТА(" & Year(Date) & ":" & Month(Date) & ";1)"

wsSource.Range("F2").NumberFormat = "dd.mm.yyyy"

wsSource.Range("F3").Formula = "<=ДАТА(" & Year(Date) & ":" & Month(Date) & ";ДЕНЬ(ДАТА(" & Year(Date) & ":" & Month(Date) + 1 & ";1)-1))"

wsSource.Range("F3").NumberFormat = "dd.mm.yyyy"

Set rngCriteria = wsSource.Range("F1:F3")

' Применение расширенного фильтра

rngData.AdvancedFilter Action:=xlFilterCopy, _

CriteriaRange:=rngCriteria, _

CopyToRange:=wsResult.Range("A1"), _

Unique:=False

' Очистка критериев

wsSource.Range(criteriaRange).ClearContents

End Sub

Этот макрос:

  • 📌 Определяет текущий месяц автоматически
  • 📊 Создает новый лист для результатов
  • 🔄 Обновляет данные при каждом запуске
  • 🗑️ Удаляет старый лист "Результат", если он существует

Чтобы использовать этот код:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA
  2. Вставьте код в новый модуль (Insert → Module)
  3. Измените имя листа "Данные" на ваше
  4. Назначьте макрос на кнопку или запустите через Alt+F8

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

Как отфильтровать даты за последний квартал?

Используйте формулу в расширенном фильтре или сводной таблице:

=И(A2>=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())-2; 1); A2<=ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ()); 0))

Для сводной таблицы: сгруппируйте даты по кварталам и выберите последний.

Почему Excel показывает даты как ######?

Это происходит, когда:

  • 🔹 Ширина столбца слишком мала для отображения даты
  • 🔹 Ячейка содержит отрицательную дату (Excel не поддерживает даты до 1900 года)
  • 🔹 Формат ячейки установлен как "Общий" вместо "Дата"

Решение: расширьте столбец или измените формат ячейки.

Как фильтровать даты по дням недели (например, только понедельники)?

Добавьте вспомогательный столбец с формулой:

=ДЕНЬНЕД(A2; 2)

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

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

Да, если ваши данные содержат время. Используйте:

  • 🔹 Для утра (до 12:00): =ВРЕМЯЗНАЧ(A2)<0,5
  • 🔹 Для вечера (после 18:00): =ВРЕМЯЗНАЧ(A2)>0,75

Где 0,5 = 12:00, 0,75 = 18:00 (Excel хранит время как долю суток).

Как сохранить фильтр, чтобы не настраивать его заново?

Варианты:

  • 📌 Сохраните файл как шаблон (.xltx) с настроенным фильтром
  • 📊 В сводных таблицах фильтры сохраняются автоматически
  • 🔄 В Power Query все шаги фильтрации сохраняются в запросе
  • 📝 Для расширенного фильтра храните критерии на отдельном листе