Выборка по дате в Excel: от простого фильтра до продвинутых формул

Почему выборка по дате в Excel вызывает сложности?

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

Ещё одна распространённая проблема — несоответствие форматов. Дата "01.12.2026" в одной ячейке может быть воспринята как 1 декабря, а в другой — как 12 января, если настройки региональные отличаются. А что делать, если нужно выбрать все записи за последнюю неделю или текущий квартал, при этом учитывая динамически меняющуюся дату? Стандартный фильтр с такими задачами не справится. В этой статье мы разберём 7 рабочих способов — от базовых до продвинутых, — которые покроют 90% реальных сценариев.

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

Способ 1: Быстрая фильтрация через стандартный фильтр

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

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

Здесь доступны базовые опции:

  • 📅 Равно — точная дата (например, 15.05.2026).
  • 📊 До/После — все даты до или после указанной.
  • 🔄 Между — диапазон дат (например, с 01.01.2026 по 31.01.2026).
  • 📌 Первые 10... — топ-N самых ранних или поздних дат.

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

Убедитесь, что столбец отформатирован как "Дата"|Проверьте отсутствие текстовых значений|Удалите пустые ячейки или заполните их нулями|Примените фильтр только к диапазону с данными-->

Способ 2: Фильтрация по текущей дате (динамический диапазон)

Часто требуется выбрать записи за сегодняшний день, текущую неделю или месяц, причём так, чтобы фильтр обновлялся автоматически. Стандартный фильтр с этим не справится — нужны формулы. Рассмотрим два варианта:

Вариант А: Фильтр с функцией СЕГОДНЯ()

Если нужно отобразить только строки с сегодняшней датой:

  1. Добавьте вспомогательный столбец рядом с датами.
  2. Введите формулу:
    =ЕСЛИ(A2=СЕГОДНЯ(); "Да"; "")
  3. Примените фильтр по вспомогательному столбцу, оставив только ячейки с "Да".

Вариант Б: Фильтр по текущему месяцу

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

=ЕСЛИ(МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ()); "Текущий месяц"; "")

💡 Полезный совет: Чтобы скрыть вспомогательный столбец после фильтрации, выделите его → правая кнопка → Скрыть. Формулы продолжат работать, но не будут мешать.

Ежедневно|Несколько раз в неделю|Раз в месяц|Реже-->

Способ 3: Расширенный фильтр для сложных условий

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

  • 📌 Сохранять условия фильтрации для повторного использования.
  • 🔍 Фильтровать данные по нескольким критериям одновременно (например, дата + категория).
  • 📤 Копировать отфильтрованные данные в другое место листа.

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

  1. Создайте диапазон критериев (например, в ячейках D1:D2):
    • D1: заголовок столбца (должен совпадать с оригиналом, например "Дата").
    • D2: условие, например >=01.01.2026.
  • Перейдите на вкладку ДанныеРасширенный фильтр.
  • Укажите:
    • Исходный диапазон — ваша таблица с данными.
    • Диапазон условий — ячейки D1:D2.
    • Отметьте Скопировать результат в другое место, если нужно.
    Пример критериев Описание Результат
    >=01.01.2026
    <=31.01.2026
    Диапазон с 1 по 31 января 2026 Все записи за январь
    <>"" Исключить пустые ячейки Только ячейки с датами
    =СЕГОДНЯ()-7 Дата ровно неделю назад Записи за конкретный день

    ⚠️ Внимание: Если вы используете СЕГОДНЯ() или другие динамические функции в критериях расширенного фильтра, не забывайте обновлять данные клавишей F9. Excel не всегда пересчитывает формулы в диапазоне условий автоматически.

    Способ 4: Фильтрация через Power Query (для больших данных)

    Если вы работаете с тысячами строк, обычные фильтры могут тормозить. В этом случае Power Query (доступен в Excel 2016+) станет спасением. Этот инструмент позволяет:

    • 🚀 Обрабатывать миллионы строк без зависаний.
    • 🔧 Применять сложные фильтры по датам (например, "последний квартал минус выходные").
    • 🔄 Автоматически обновлять данные при изменении источника.

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

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

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

    Как вернуть исходные данные после Power Query?

    Если вы загрузили отфильтрованные данные через Power Query и хотите вернуть исходную таблицу, не удаляйте запрос! Просто:

    1. Перейдите на вкладку ДанныеЗапросы и соединения.

    2. Найдите ваш запрос в списке → правая кнопка → Изменить.

    3. В редакторе Power Query удалите шаги фильтрации (крестик рядом с каждым шагом).

    4. Нажмите Закрыть и загрузить — данные вернутся в исходном виде.

    Способ 5: Формулы для выборки (ФИЛЬТР, ВЫБРАТЬ, ИНДЕКС+ПОИСКПОЗ)

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

    1. Функция ФИЛЬТР (Excel 365 и 2021)

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

    =ФИЛЬТР(
    

    A2:B100; -- диапазон данных

    (МЕСЯЦ(A2:A100)=МЕСЯЦ(СЕГОДНЯ()))*(ГОД(A2:A100)=ГОД(СЕГОДНЯ())); -- условие

    "Нет данных"

    )

    2. Комбинация ИНДЕКС + ПОИСКПОЗ (для старых версий)

    Для Excel 2016 и ранее:

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

    ИНДЕКС($B$2:$B$100; ПОИСКПОЗ(1; -- что искать

    (A2:A100>=D2)*(A2:A100<=D3); -- условие (D2 и D3 -- ячейки с датами начала и конца)

    0

    ));

    ""

    )

    Эту формулу нужно ввести как формулу массива (завершите ввод Ctrl+Shift+Enter в Excel 2016).

    3. Функция ВЫБРАТЬ (Excel 365)

    Позволяет выбрать конкретные столбцы из отфильтрованных данных:

    =ВЫБРАТЬ(
    

    ФИЛЬТР(A2:B100; A2:A100>=D2); -- фильтруем данные

    {1}; -- возвращаем только первый столбец

    "Нет данных"

    )

    ⚠️ Внимание: Формулы массива (особенно в старых версиях Excel) могут значительно замедлять работу файла, если обрабатывают большие диапазоны. Ограничивайте диапазон реальными данными (например, A2:A100 вместо A:A).

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

    Иногда не нужно скрывать строки — достаточно выделить ячейки с нужными датами цветом. Для этого подходит условное форматирование. Примеры:

    Выделение просроченных дат

    1. Выделите столбец с датами.
    2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
    3. Выберите Форматировать ячейки, которые содержат.
    4. Установите условие: Значение ячейкименьше=СЕГОДНЯ().
    5. Задайте формат (например, красный фон).

    Выделение дат текущей недели

    Используйте формулу:

    =И(NEДЕЛЯ(A1)=NEДЕЛЯ(СЕГОДНЯ()); ГОД(A1)=ГОД(СЕГОДНЯ()))

    💡 Полезный совет: Чтобы быстро найти все выделенные ячейки, используйте фильтр по цвету: ДанныеФильтр → стрелка в заголовке → Фильтр по цвету → выберите нужный цвет.

    Способ 7: Сводные таблицы для анализа по датам

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

    • 📊 Группировать даты по дням, месяцам, кварталам или годам.
    • 🔢 Считать суммы, средние значения или количество записей за период.
    • 📈 Строить динамические графики на основе отфильтрованных данных.

    Как настроить:

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

    🔹 Ключевой вывод: Сводные таблицы автоматически обновляются при изменении исходных данных. Если вы добавите новые строки в исходную таблицу, достаточно кликнуть правой кнопкой по сводной таблице и выбрать Обновить.

    Частые ошибки и как их избежать

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

    1. Текст вместо дат: Excel не распознаёт "01.01.2026" как дату, если ячейка отформатирована как текст. Решение: Используйте функцию ДАТАЗНАЧ() или преобразуйте столбец через ДанныеТекст по столбцам.
    2. Несоответствие форматов: Дата "01.12" может означать 1 декабря или 12 января в зависимости от региональных настроек. Решение: Всегда указывайте год (01.12.2026) или используйте формат YYYY-MM-DD (например, 2026-12-01).
    3. Пустые ячейки: Фильтры игнорируют пустые ячейки, что может исказить результаты. Решение: Замените пустоты на минимальную дату (например, 01.01.1900) или используйте условие <>"" в расширенном фильтре.
    4. Ошибки в формулах: Формулы вроде =A1>D1 (где D1 содержит дату) могут возвращать #ЗНАЧ!, если форматы не совпадают. Решение: Преобразуйте обе ячейки в даты с помощью ДАТАЗНАЧ().

    ⚠️ Внимание: Если вы импортируете данные из внешних источников (например, CSV), даты часто преобразуются в текст. Перед фильтрацией проверяйте формат: выделите ячейку → посмотрите на строку формул. Если там отображается левое выравнивание (например, '01.01.2026), значит это текст, а не дата.

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

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

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

    =ЕСЛИ(
    

    И(

    МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ())-1;

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

    );

    "Последний месяц";

    ""

    )

    Затем отфильтруйте по значению "Последний месяц". Для Excel 365 подойдёт:

    =ФИЛЬТР(
    

    A2:B100;

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

    "Нет данных"

    )

    Почему фильтр не находит даты, которые есть в таблице?

    Причины могут быть следующими:

    1. Ячейки отформатированы как текст. Проверьте формат и при необходимости преобразуйте данные через ДанныеТекст по столбцам.
    2. В датах указано время (например, 01.01.2026 00:00). Используйте функцию ЦЕЛОЕ(), чтобы отсечь время: =ЦЕЛОЕ(A2).
    3. Региональные настройки Excel интерпретируют даты по-другому. Попробуйте ввести дату в формате YYYY-MM-DD (например, 2026-01-01).
    Как выбрать даты, которые попадают на выходные?

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

    =ЕСЛИ(ИЛИ(ДЕНЬНЕД(A2;2)>5); "Выходной"; "Будний")

    Затем отфильтруйте по значению "Выходной". Альтернативно, в Power Query используйте:

    1. Выберите столбец с датой → Добавить столбецНастраиваемый столбец.
    2. Введите формулу: = Date.DayOfWeek([Дата]) > 4 (где [Дата] — название вашего столбца).
    3. Отфильтруйте по TRUE.
    Можно ли фильтровать даты по кварталам?

    Да, для этого используйте функцию ОКРУГЛВВЕРХМЕС или сводные таблицы:

    Способ 1 (формула):

    =ОКРУГЛВВЕРХМЕС(A2; 0) -- возвращает первую дату квартала
    

    =ОКРУГЛВВЕРХМЕС(A2; 3)-1 -- возвращает последнюю дату квартала

    Способ 2 (сводная таблица):

    1. Создайте сводную таблицу.
    2. Добавьте поле с датой в область Строки.
    3. Щёлкните правой кнопкой по любой дате → Группировать → выберите Кварталы.
    Как сохранить отфильтрованные данные в новый файл?

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

    1. Копирование: Выделите видимые строки (после фильтра) → Ctrl+C → вставьте в новый файл.
    2. Power Query: Загрузите отфильтрованные данные в новую таблицу (см. Способ 4) → скопируйте её в другой файл.
    3. VBA: Используйте макрос для экспорта:
      Sub ExportFilteredData()
      

      Dim wsSource As Worksheet, wsNew As Worksheet

      Set wsSource = ActiveSheet

      wsSource.AutoFilter.Range.Copy

      Set wsNew = Workbooks.Add.Worksheets(1)

      wsNew.Paste

      wsNew.Columns.AutoFit

      End Sub

      Этот код копирует все видимые строки после фильтра в новый файл.