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

Почему фильтрация по датам в Excel требует особого подхода

Работа с датами в Microsoft Excel — одна из самых востребованных задач при анализе данных. Но если числовые значения и текст фильтруются интуитивно, то даты часто ставят пользователей в тупик. Дело в том, что Excel хранит даты не как текст, а как серийные номера (количество дней с 1 января 1900 года). Это приводит к неожиданным результатам при стандартной фильтрации: например, попытка отобрать записи за "январь 2023" через текстовый фильтр может пропустить половину данных.

Ещё одна ловушка — форматы дат. Если в столбце смешаны форматы (например, "01.01.2023" и "01-янв-23"), Excel воспринимает их как разные типы данных. В результате фильтр может игнорировать часть записей или работать непредсказуемо. Особенно актуально это для таблиц, импортированных из внешних источников (1С, CRM-систем, баз данных).

В этой статье мы разберём 5 надёжных способов фильтрации по датам, которые работают в Excel 2010–2023 и Office 365, включая малоизвестные приёмы для нестандартных задач. Вы узнаете, как отфильтровать данные по диапазону дат, дню недели, кварталу или даже рабочим/выходным дням — без формул и с их использованием.

📊 Какой способ фильтрации вы используете чаще?
Автофильтр
Расширенный фильтр
Формулы (ФИЛЬТР, FILTER)
Условное форматирование
Другой

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

Автофильтр — самый простой инструмент, который подходит для 80% задач. Он позволяет отбирать данные по точным датам, диапазонам или относительным периодам (например, "последняя неделя"). Чтобы его включить:

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

В открывшемся меню вы увидите несколько вариантов:

  • 📅 Фильтры по дате: готовые диапазоны ("Завтра", "На этой неделе", "В прошлом квартале" и т.д.).
  • 🔍 Текстовые фильтры: полезны, если даты хранятся как текст (например, после импорта из CSV).
  • 📊 Числовые фильтры: позволяют задавать условия типа "больше", "меньше", "между".
  • Выделение отдельных дат: отметьте галочками нужные значения в списке.

Пример: чтобы отобразить продажи за II квартал 2023 года, выберите в фильтрах по дате Между... и укажите диапазон с 01.04.2023 по 30.06.2023. Excel автоматически преобразует введённые даты в правильный формат.

⚠️ Внимание: Если в столбце есть пустые ячейки или текстовые значения (например, "Нет данных"), автофильтр по дате их проигнорирует. Чтобы их увидеть, снимите все фильтры или используйте текстовый фильтр.

Убедитесь, что столбец с датой имеет формат "Дата" (выделите столбец → Главная → Формат → Формат ячеек → Дата)

Проверьте отсутствие скрытых символов (пробелов, неразрывных пробелов) в ячейках

Преобразуйте текстовые даты в настоящие даты с помощью функции =ДАТАЗНАЧ()

Удалите дубликаты, если они мешают анализу (Данные → Удалить дубликаты)

-->

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

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

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

  1. Создайте диапазон условий (например, в ячейках F1:G2):
    • В F1 введите заголовок столбца с датой (должен совпадать с оригиналом!).
    • В F2 укажите условие, например >=01.01.2023.
    • В G1 введите заголовок другого столбца (например, "Категория"), а в G2 — значение для фильтра (например, "Электроника").
  • Перейдите на вкладку ДанныеСортировка и фильтрДополнительно.
  • В окне настроек укажите:
    • Исходный диапазон: ваша таблица с данными (например, A1:D1000).
    • Диапазон условий: созданный вами диапазон (например, F1:G2).
    • Отметьте Скопировать результат в другое место, если нужно сохранить отфильтрованные данные отдельно.

    Пример диапазона условий для фильтрации продаж электроники за 2023 год:

    ДатаКатегория
    >=01.01.2023Электроника
    <=31.12.2023

    Обратите внимание: если в диапазоне условий указать несколько строк для одного столбца (как в примере выше), Excel воспримет их как условие "И" (логическое AND). Для условия "ИЛИ" (OR) нужно разместить критерии в одной строке.

    Как фильтровать по дню недели?

    Чтобы отобрать, например, все записи по понедельникам, используйте функцию =ДЕНЬНЕД(ячейка;2) в диапазоне условий. Например:

    ДатаДень недели
    =1

    Где "1" — это понедельник (воскресенье = 7). Не забудьте добавить вспомогательный столбец с формулой =ДЕНЬНЕД(A2;2) в исходную таблицу.

    3. Фильтрация с помощью формул: гибкость без ограничений

    Если автофильтр и расширенный фильтр не справляются с задачей (например, нужно отфильтровать даты по нестандартному условию вроде "каждая вторая пятница месяца"), на помощь приходят формулы массива. В современных версиях Excel (2019+) для этого есть специальная функция ФИЛЬТР (англ. FILTER).

    Пример 1: Фильтрация по диапазону дат (Excel 2019+):

    =ФИЛЬТР(
    

    A2:D100; // Диапазон данных для фильтрации

    (A2:A100>=ДАТА(2023;1;1))*(A2:A100<=ДАТА(2023;12;31)); // Условие: даты в 2023 году

    "Нет данных" // Сообщение, если ничего не найдено

    )

    Пример 2: Фильтрация по дню недели (любая версия Excel):

    =ЕСЛИОШИБКА(
    

    ИНДЕКС($A$2:$D$100; ПОИСКПОЗ(1; (ДЕНЬНЕД($A$2:$A$100;2)=5)*1; 0); 0);

    ""

    )

    Эта формула вернёт все строки, где дата приходится на четверг (5). Введите её как формулу массива (в старых версиях Excel нажмите Ctrl+Shift+Enter).

    Для удобства можно создать выпадающий список с днями недели и связать его с формулой. Например, если в ячейке F1 пользователь выбирает день недели (1–7), формула примет вид:

    =ФИЛЬТР(A2:D100; ДЕНЬНЕД(A2:A100;2)=F1; "Нет данных")
    ⚠️ Внимание: Формулы массива могут значительно замедлить работу книги, если таблица содержит более 10 000 строк. В таких случаях лучше использовать Power Query (см. раздел 5).

    4. Условное форматирование: визуальная фильтрация

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

    • 🔴 Выделять даты, которые истекли (например, дедлайны проектов).
    • 🟢 Подсвечивать даты в определённом диапазоне (например, текущий месяц).
    • 🟡 Отмечать даты с нестандартными условиями (например, выходные дни).

    Пример: выделение просроченных задач:

    1. Выделите диапазон с датами.
    2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
    3. Выберите Использовать формулу для определения форматируемых ячеек.
    4. Введите формулу: =A1 (где A1 — первая ячейка диапазона).
    5. Задайте формат (например, красный текст на сером фоне).

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

    =И(ДЕНЬ(A1)=ДАТАМЕС(A1;1)-A1; МЕСЯЦ(A1)=МЕСЯЦ(СЕГОДНЯ()))

    Условное форматирование удобно тем, что не скрывает данные, а только визуально их группирует. Это полезно, если вам нужно анализировать таблицу целиком, но при этом быстро находить критичные записи.

    5. Power Query: фильтрация больших данных без формул

    Если вы работаете с таблицами на 100 000+ строк, обычные фильтры Excel начинают тормозить. В таких случаях лучше использовать Power Query — инструмент для обработки и трансформации данных, встроенный в Excel 2016+. Он позволяет:

    • 📊 Фильтровать даты по любым условиям без нагрузки на файл.
    • 🔄 Автоматически обновлять данные при изменении источника.
    • 📁 Объединять несколько таблиц с датами (например, из разных месяцев).

    Пример: фильтрация продаж за текущий год с помощью Power Query:

    1. Выделите вашу таблицу и перейдите на вкладку ДанныеИз таблицы/диапазона (в группе Получить и преобразовать данные).
    2. В открывшемся редакторе Power Query найдите столбец с датой и нажмите на стрелку фильтра.
    3. Выберите Фильтры датыНастраиваемый фильтр.
    4. Задайте условие: дата больше или равно 01.01.2023 и дата меньше или равно 31.12.2023.
    5. Нажмите ОК, затем Закрыть и загрузить.

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

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

    let
    

    Source = Excel.CurrentWorkbook(){[Name="Таблица1"]}[Content],

    FilteredRows = Table.SelectRows(Source, each Date.DayOfWeek([Дата]) <> 6 and Date.DayOfWeek([Дата]) <> 0)

    in

    FilteredRows

    Где 6 — суббота, 0 — воскресенье.

    6. Динамические диапазоны и сводные таблицы

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

    • 📅 Группировать даты по годам, кварталам, месяцам или дням.
    • 📈 Строить динамические графики на основе отфильтрованных данных.
    • 🔍 Использовать срезы (slicers) для интерактивной фильтрации.

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

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

    Для динамической фильтрации добавьте срез:

    1. Выделите сводную таблицу.
    2. Перейдите на вкладку Анализ (или Опции в старых версиях) → Вставить срез.
    3. Отметьте поле, по которому хотите фильтровать (например, "Год").

    Срезы позволяют интерактивно менять фильтры одним кликом, что удобно для презентаций или дашбордов. Например, можно создать срез по годам и быстро переключаться между 2022, 2023 и 2026 годами.

    Как создать выпадающий список с датами?

    Чтобы пользователь мог выбирать дату из списка, а таблица автоматически фильтровалась:

    1. Создайте диапазон с уникальными датами (используйте Данные → Удалить дубликаты).

    2. Перейдите на вкладку ДанныеПроверка данных.

    3. В поле Тип данных выберите Список и укажите диапазон с датами.

    4. Свяжите этот список с формулой ФИЛЬТР или расширенным фильтром.

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

    Почему фильтр по дате не работает? Я ввожу условие, но данные не отображаются.

    Наиболее частые причины:

    • Столбец с датой имеет текстовый формат. Проверьте это, выделив ячейку: если дата выровнена по левому краю — это текст. Исправьте с помощью =ДАТАЗНАЧ().
    • В данных есть скрытые символы (пробелы, переносы строк). Используйте =ПЕЧСИМВ() для очистки.
    • Указан неверный диапазон в расширенном фильтре. Убедитесь, что диапазон условий включает заголовки.
    • Дата в условии введена в другом формате, чем в данных (например, "01.01.2023" vs "01-янв-23").

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

    Как отфильтровать даты по текущему месяцу автоматически?

    Используйте динамические формулы:

    1. Для автофильтра: в ручном режиме укажите диапазон с 01.текущий_месяц.текущий_год по конец_месяца (например, 01.05.2026-31.05.2026).
    2. Для формул:
      =ФИЛЬТР(
      

      A2:D100;

      (МЕСЯЦ(A2:A100)=МЕСЯЦ(СЕГОДНЯ()))*(ГОД(A2:A100)=ГОД(СЕГОДНЯ()));

      "Нет данных"

      )

    3. Для условного форматирования: формула =И(МЕСЯЦ(A1)=МЕСЯЦ(СЕГОДНЯ()); ГОД(A1)=ГОД(СЕГОДНЯ())).

    Чтобы месяц обновлялся автоматически, используйте СЕГОДНЯ() или TODAY() (в английской версии).

    Можно ли фильтровать даты по рабочим/выходным дням?

    Да, для этого есть несколько способов:

    1. Функция ДЕНЬНЕД:
      • Суббота: =ДЕНЬНЕД(A1;2)=6
      • Воскресенье: =ДЕНЬНЕД(A1;2)=7
      • Рабочие дни: =И(ДЕНЬНЕД(A1;2)<>6; ДЕНЬНЕД(A1;2)<>7)
  • Power Query: используйте код на языке M (см. раздел 5).
  • Условное форматирование: создайте правило с формулой из пункта 1.
  • Для учёта праздничных дней потребуется дополнительная таблица с датами праздников и функция ПОИСКПОЗ.

    Как фильтровать даты по кварталам?

    Есть 3 варианта:

    • 📌 Группировка в сводной таблице: выберите поле с датой → правая кнопка → ГруппироватьКварталы.
    • 📊 Формула для определения квартала:
      =ОКРВВЕРХ(МЕСЯЦ(A1)/3; 0)

      Она вернёт номер квартала (1–4). Затем фильтруйте по этому столбцу.

    • 🔍 Расширенный фильтр: создайте диапазон условий с формулами для начала и конца квартала. Например, для II квартала 2023:
      Дата
      >=01.04.2023
      <=30.06.2023
    Почему после фильтрации пропали некоторые строки?

    Вероятные причины:

    • В данных есть пустые ячейки или ошибки (например, #ЗНАЧ!). Автофильтр их скрывает. Чтобы увидеть, снимите фильтр или используйте Данные → Фильтр → Отменить фильтрацию.
    • Применён двойной фильтр: проверьте, не активны ли фильтры в нескольких столбцах одновременно.
    • Данные отсортированы некорректно: перед фильтрацией выполните сортировку по дате (Данные → Сортировка).
    • В расширенном фильтре указан неверный диапазон условий. Убедитесь, что заголовки в диапазоне условий полностью совпадают с заголовками в исходной таблице (включая регистр).

    Чтобы диагностировать проблему, попробуйте отфильтровать данные по одному критерию (например, только по дате). Если строки появятся, проблема в дополнительных условиях.