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

Работа с датами рождения в Microsoft Excel — одна из самых востребованных задач при обработке кадровых данных, списков клиентов или учебных журналов. Казалось бы, что может быть проще: выбрать столбец с датами и применить стандартный фильтр. Но на практике пользователи сталкиваются с массой нюансов: как отфильтровать людей старше 18 лет? Как выделить тех, у кого день рождения в текущем месяце? Или как автоматически обновлять фильтр при изменении текущей даты?

В этой статье мы разберём 5 практических способов фильтрации по дате рождения — от базовых инструментов до продвинутых приёмов с формулами. Вы узнаете, как использовать автофильтр, расширенный фильтр, условное форматирование и даже Power Query для работы с возрастными категориями. А в конце вас ждёт FAQ с ответами на самые частые вопросы.

Перед тем как приступить, убедитесь, что ваши данные правильно структурированы. Даты рождения должны быть в формате ДД.ММ.ГГГГ (или аналогичном), а не текстом. Если Excel воспринимает даты как строки, воспользуйтесь функцией =ДАТАЗНАЧ() для преобразования.

📊 Как часто вы работаете с датами рождения в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

1. Базовый автофильтр: как отфильтровать даты по диапазону

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

Как включить автофильтр:

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

В открывшемся меню выберите Фильтры по дате. Здесь доступны опции:

  • 📅 Равно — точная дата (например, 15.05.1990).
  • 📊 До/После — диапазон дат (например, все, кто родился до 01.01.2000).
  • 🔄 Между — интервал (например, с 01.01.1980 по 31.12.1989).
  • 📅 Завтра/Сегодня/На этой неделе — динамические фильтры (полезно для напоминаний о днях рождения).

Пример: чтобы найти всех, кто родился в 1990-х годах, выберите Между и укажите диапазон 01.01.199031.12.1999.

2. Фильтрация по возрасту: как посчитать и отсортировать

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

Формула для расчёта возраста:

=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)

где A2 — ячейка с датой рождения.

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

  1. Добавьте новый столбец рядом с датами рождения (например, "Возраст").
  2. Введите формулу в первую ячейку столбца и протяните её вниз.
  3. Примените автофильтр к столбцу "Возраст".
  4. Выберите Числовые фильтрыБольше чем (например, 18 для совершеннолетних).

Если вам нужно динамически обновлять возраст при открытии файла, используйте эту модификацию формулы:

=ЕСЛИ(A2="";"";ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25))

Добавить столбец "Возраст"|Проверить формат дат в исходном столбце|Ввести формулу с функцией СЕГОДНЯ()|Применить автофильтр к новому столбцу|Убедиться, что возраст обновляется автоматически-->

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

Когда нужны многоуровневые условия (например, "родился до 2000 года ИЛИ старше 30 лет"), стандартный автофильтр не подходит. Здесь поможет расширенный фильтр.

Пример задачи: найти всех, кто родился в зимние месяцы (декабрь, январь, февраль) И старше 25 лет.

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

  1. Создайте отдельный диапазон критериев (например, на другом листе).
  2. В первой строке укажите заголовки: Дата рождения и Возраст.
  3. Во второй строке введите условия:
    • Для даты: >=01.12.1900 и <=28.02.1900 (или любой год).
    • Для возраста: >25.
  • Перейдите в ДанныеРасширенный фильтр.
  • Укажите исходный диапазон и диапазон критериев.
  • Важно: Excel воспринимает условия в одной строке как И, в разных строках — как ИЛИ. Например:

    Дата рожденияВозраст
    >=01.12.1990>25
    <=28.02.1991

    Этот фильтр найдёт тех, кто родился зимой 1990-1991 гг. И старше 25 лет.

    Как объединить несколько условий по датам?

    Если нужно отфильтровать даты из НЕСКОЛЬКИХ не пересекающихся периодов (например, зимние месяцы ЛЮБОГО года), используйте отдельные строки для каждого диапазона:

    =ИЛИ(
    

    И(МЕСЯЦ(A2)=12; ДЕНЬ(A2)>=1);

    И(МЕСЯЦ(A2)=1);

    И(МЕСЯЦ(A2)=2; ДЕНЬ(A2)<=28)

    )

    Добавьте этот столбец как критерий в расширенный фильтр.

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

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

    Пример 1: Выделить тех, у кого день рождения в текущем месяце.

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

    Пример 2: Выделить даты рождения старше 50 лет красным цветом.

    =ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)>50

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

    5. Power Query: автоматизация фильтрации по датам

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

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

    1. Выделите таблицу и перейдите в ДанныеИз таблицы/диапазона (или Получить данныеИз файла/базы данных).
    2. В открывшемся редакторе Power Query выберите столбец с датами рождения.
    3. Нажмите на стрелку фильтра и выберите:
      • 📅 Фильтры по датеМежду (для диапазона).
      • 🔢 Числовые фильтрыБольше (если предварительно рассчитали возраст).
  • Добавьте новый столбец с возрастом: перейдите на вкладку Добавить столбецНастраиваемый столбец и введите формулу:
    =DateTime.LocalNow().Year - [Дата рождения].Year - IIf(DateTime.LocalNow().Month < [Дата рождения].Month Or (DateTime.LocalNow().Month = [Дата рождения].Month And DateTime.LocalNow().Day < [Дата рождения].Day), 1, 0)
  • Примените фильтр к новому столбцу (например, возраст > 18).
  • Нажмите Закрыть и загрузить, чтобы вернуть данные в Excel.
  • Преимущества Power Query:

    • 🔄 Автоматическое обновление при изменении исходных данных.
    • 📊 Возможность объединять несколько таблиц (например, данные из HR-системы и бухгалтерии).
    • 🛠️ Гибкие формулы для работы с датами (например, вычисление знака зодиака).
    = if [Дата рождения] <= DateTime.LocalNow().AddDays(-DateTime.LocalNow().Day + 20) And [Дата рождения] >= DateTime.LocalNow().AddDays(-DateTime.LocalNow().Day - 10) then "Водолей"
    

    else if ... // продолжите для других знаков

    -->

    6. Динамические фильтры: как учитывать текущую дату

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

    Способ 1: Фильтр с формулой

    1. Добавьте столбец "Дней до ДР" с формулой:
      =ЕСЛИ(A2="";"";ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2))-СЕГОДНЯ())

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

    2. Примените автофильтр к новому столбцу и выберите Между 0 и 7.

    Способ 2: Расширенный фильтр с динамическим критерием

    1. Создайте отдельную ячейку (например, D1) с формулой:
      =СЕГОДНЯ()+7

      (это будет верхняя граница диапазона).

    2. В диапазоне критериев для расширенного фильтра укажите:
      Дней до ДР
      <=7
    3. Или используйте формулу в критериях:
      =И(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2))>=СЕГОДНЯ();ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2))<=СЕГОДНЯ()+7)
    Как учитывать високосные годы в расчётах возраста?

    Функция ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25) уже учитывает високосные годы благодаря делению на 365,25 (средняя длина года). Если нужна высокая точность, используйте:

    =РАЗНДАТ(A2;СЕГОДНЯ();"y")

    Эта функция возвращает полные годы между датами, корректно обрабатывая високосные дни.

    7. Типичные ошибки и как их избежать

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

    Ошибка 1: Даты воспринимаются как текст

    ⚠️ Внимание: Если при применении фильтра в меню нет опций "Фильтры по дате", а только "Текстовые фильтры", значит Excel не распознаёт ваши данные как даты. Исправьте это через Формат ячеек (Ctrl+1) → выберите формат Дата. Если даты хранятся как текст (например, "15.05.1990"), используйте функцию =ДАТАЗНАЧ(A2) в новом столбце.

    Ошибка 2: Неправильный расчёт возраста

    • Неверно: =ГОД(СЕГОДНЯ())-ГОД(A2) — не учитывает месяц и день.
    • Верно: =ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25) или =РАЗНДАТ(A2;СЕГОДНЯ();"y").

    Ошибка 3: Фильтр не обновляется автоматически

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

    Ошибка 4: Расширенный фильтр не работает с несколькими условиями

    • Проверьте, что условия для И расположены в одной строке, а для ИЛИ — в разных.
    • Убедитесь, что заголовки в диапазоне критериев совпадают с заголовками исходной таблицы.

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

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

    Используйте автофильтр: выберите столбец с датами → Фильтры по датеМесяцМай. Или примените формулу в расширенном фильтре: =МЕСЯЦ(A2)=5.

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

    Да. Добавьте столбец с формулой =ДЕНЬНЕД(A2;2) (возвращает номер дня недели, где 1 — понедельник). Затем отфильтруйте по значению 1.

    Как найти людей, у которых день рождения был на прошлой неделе?

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

    =И(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2))>=СЕГОДНЯ()-14;ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2))<СЕГОДНЯ()-7)

    Затем примените фильтр к этому столбцу по значению ИСТИНА.

    Как отсортировать список по дате рождения от старшего к младшему?

    Выделите столбец с датами → ДанныеСортировка от старых к новым. Или добавьте столбец с возрастом и сортируйте по нему по убыванию.

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

    Скорее всего, проблема в формуле расчёта возраста. Используйте:

    =РАЗНДАТ(A2;СЕГОДНЯ();"y")

    или

    =ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)

    Убедитесь, что в ячейках нет текстовых значений (например, пустых строк или ошибок #ЗНАЧ!).