Выборка по дате в 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

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