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

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

Работа с датами рождения в Microsoft Excel или Google Таблицах возникает в самых разных сценариях: от кадрового учёта до управления клиентской базой. Например, HR-специалистам нужно быстро найти сотрудников, у которых день рождения в текущем месяце, чтобы организовать поздравления. Маркетологам — сегментировать аудиторию по возрастным группам для таргетированных рассылок. А аналитикам — выявить корреляцию между возрастом и покупательской способностью.

Главная сложность заключается в том, что дата рождения — это не просто число, а комбинация дня, месяца и года, которую Excel воспринимает как последовательный номер (начиная с 1 января 1900 года). Неправильный формат ячеек, ошибки ввода (например, "05.12" вместо "05.12.1990") или неучтённые високосные годы могут исказить результаты выборки. В этой статье разберём 5 надёжных методов фильтрации дат рождения, от базовых до продвинутых, с учётом типичных ошибок.

Подготовка данных: как Excel «видит» даты рождения

Прежде чем приступать к выборке, убедитесь, что ваши данные корректно распознаны Excel как даты. Частая ошибка — когда столбец с датами рождения отображается как текст (выровнен по левому краю) или содержит неполные значения (например, только день и месяц без года). Это приводит к тому, что функции вроде ДАТА() или ГОД() возвращают ошибочные результаты.

Проверить формат просто:

  • 📅 Кликните правой кнопкой по ячейке с датой → Формат ячеек → выберите категорию Дата. Если опция недоступна, данные хранятся как текст.
  • 🔍 Используйте функцию =ТИП(A1) — если результат 1, это текст; 5 — ошибка; 16 — корректная дата.
  • ⚠️ Обратите внимание на региональные настройки: в российском Excel формат по умолчанию ДД.ММ.ГГГГ, а в американском — ММ/ДД/ГГГГ. Это критично при импорте данных!
⚠️ Внимание: Если даты введены как текст (например, "15-03-1985"), используйте функцию =ДАТАЗНАЧ(A1) или инструмент Текст по столбцам (Данные → Текст по столбцам), чтобы преобразовать их в корректный формат.
Признак Дата в формате Excel Текстовое значение
Выравнивание в ячейке По правому краю По левому краю
Результат функции =ГОД(A1) 1990 (корректный год) #ЗНАЧ! (ошибка)
Формат ячейки Дата или Общий (число) Текстовый
📊 Как вы обычно храните даты рождения в Excel?
В отдельном столбце с форматом "Дата"
Как текст (ДД.ММ.ГГГГ)
Разбиваю на день/месяц/год по разным столбцам
Использую последовательный номер (например, 1=01.01.1900)

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

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

  1. Выделите заголовок столбца с датами рождения (например, B1).
  2. Перейдите на вкладку Данные → нажмите Фильтр (или используйте горячие клавиши Ctrl+Shift+L).
  3. Кликните по стрелке фильтра в заголовке столбца → Фильтры по датеМежду....
  4. Введите диапазон: 01.05.1995 и 31.05.1995ОК.

Для более гибкой фильтрации (например, "родившиеся до 1980 года или после 2000 года") используйте Настраиваемый фильтр:

  • 🔄 В настройках фильтра выберите или (логическое ИЛИ).
  • 📅 В первом условии: меньше 01.01.1980.
  • 📅 Во втором условии: больше 31.12.2000.
⚠️ Внимание: Стандартный фильтр не учитывает текущую дату автоматически. Если вам нужна динамическая выборка (например, "родившиеся в текущем месяце"), используйте методы из следующих разделов.

☑️ Подготовка к фильтрации дат рождения

Выполнено: 0 / 4

Способ 2: Функции ДАТА, ГОД, МЕСЯЦ для динамических выборок

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

Вариант А: Вспомогательный столбец с условием

Добавьте новый столбец (например, C) и введите формулу для проверки условия. Примеры:

  • 🎂 Именинники в текущем месяце: =ЕСЛИ(МЕСЯЦ(B2)=МЕСЯЦ(СЕГОДНЯ());"Да";"")
  • 👶 Младше 18 лет: =ЕСЛИ(ГОД(СЕГОДНЯ())-ГОД(B2)-ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(B2);ДЕНЬ(B2))>СЕГОДНЯ();1;0)<18;"Да";"")
  • 🎉 Юбиляры (кратные 10 годам): =ЕСЛИ(ОСТАТ(ГОД(СЕГОДНЯ())-ГОД(B2);10)=0;"Да";"")

Затем отфильтруйте таблицу по новому столбцу, оставив только строки с значением "Да".

Вариант Б: Формула массива (без вспомогательного столбца)

Для опытных пользователей подойдёт функция ФИЛЬТР (доступна в Excel 365 и Excel 2021):

=ФИЛЬТР(A2:B100; МЕСЯЦ(B2:B100)=МЕСЯЦ(СЕГОДНЯ()); "Нет данных")

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

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

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

Инструкция:

  1. Выделите диапазон с данными (например, A2:B100).
  2. Перейдите на вкладку ГлавнаяУсловное форматированиеСоздать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу (примеры ниже) и задайте формат (например, зелёный фон).

Примеры формул для условного форматирования:

  • 🟢 Родившиеся в текущем месяце: =МЕСЯЦ($B2)=МЕСЯЦ(СЕГОДНЯ())
  • 🟡 Старше 60 лет: =ГОД(СЕГОДНЯ())-$B2-ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ($B2);ДЕНЬ($B2))>СЕГОДНЯ();1;0)>60
  • 🔴 Дата рождения некорректна (год < 1900 или > текущего): =ИЛИ(ГОД($B2)<1900; ГОД($B2)>ГОД(СЕГОДНЯ()))

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

Как ускорить условное форматирование для больших таблиц?

1. Применяйте правила только к видимому диапазону (не ко всему столбцу).

2. Используйте простые формулы без вложенных функций.

3. Отключите автоматический пересчёт (Формулы → Параметры вычислений → Вручную), если данные редко обновляются.

Способ 4: Сводные таблицы для сложного анализа

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

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

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

Примеры аналитики со сводными таблицами:

  • 📊 Распределение по месяцам рождения: Группировка по месяцам покажет, в какие месяцы родилось больше всего людей (полезно для планирования поздравлений).
  • 👴 Возрастные группы: Создайте вычисляемое поле с формулой =ГОД(СЕГОДНЯ())-ГОД([@Дата_рождения]) и сгруппируйте по диапазонам (18-25, 26-35 и т.д.).
  • 📈 Динамика по годам: Группировка по годам поможет выявить тренды (например, пик рождаемости в 1980-х).
⚠️ Внимание: При группировке дат в сводной таблице Excel автоматически создаёт диапазоны с шагом в 1 месяц/год. Чтобы изменить шаг (например, на 5 лет), сначала сгруппируйте данные по годам, затем кликните правой кнопкой по группировке → Параметры группировки → укажите нужный шаг.

Способ 5: Power Query для обработки больших массивов

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

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

  1. Выделите исходную таблицу → вкладка ДанныеИз таблицы/диапазона (в разделе Получить и преобразовать данные).
  2. В редакторе Power Query выберите столбец с датами рождения → вкладка Добавить столбецНастраиваемый столбец.
  3. Создайте новый столбец с условием. Примеры формул для языка M:
    • 🎂 Именинники в текущем месяце: = if Date.Month([Дата_рождения]) = Date.Month(DateTime.LocalNow()) then "Да" else ""
    • 👶 Возраст: = DateTime.LocalNow().Year - [Дата_рождения][Year] - if DateTime.LocalNow().Month < [Дата_рождения][Month] or (DateTime.LocalNow().Month = [Дата_рождения][Month] and DateTime.LocalNow().Day < [Дата_рождения][Day]) then 1 else 0
  • Отфильтруйте новый столбец по значению "Да" → Закрыть и загрузить.
  • Преимущества Power Query:

    • Скорость: Обрабатывает миллионы строк без зависаний.
    • 🔄 Автоматизация: Запрос можно обновить одним кликом при изменении исходных данных.
    • 🧹 Очистка: Позволяет исправить ошибки в датах (например, заменить "01.13.1990" на корректное значение).

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

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

    Ошибка Причина Решение
    Функция ГОД() возвращает #ЗНАЧ! Дата хранится как текст Используйте =ДАТАЗНАЧ(A1) или Текст по столбцам
    Неправильный расчёт возраста (на год больше/меньше) Не учтён факт, прошёл ли день рождения в этом году Добавьте проверку ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(B2);ДЕНЬ(B2))>СЕГОДНЯ();1;0)
    Фильтр не находит даты (например, "01.12.1990") Дата введена в американском формате (месяц/день) Измените региональные настройки или используйте =ДАТА(ГОД;МЕСЯЦ;ДЕНЬ) для явного указания форматов
    Условное форматирование не применяется Формула ссылается на неправильный диапазон (например, $B$2 вместо $B2) Убедитесь, что в формуле используются относительные ссылки на строки
    Сводная таблица не группирует даты Столбец содержит пустые ячейки или текст Очистите данные от пустых значений и преобразуйте текст в даты

    Ещё одна распространённая проблема — неучтённые високосные годы. Например, если человек родился 29 февраля, формулы вроде =ДАТА(ГОД(СЕГОДНЯ());2;29) вернут ошибку в невисокосный год. Чтобы избежать этого, используйте:

    =ЕСЛИ(ДЕНЬ(B2)=29;ЕСЛИ(ИЛИ(ОСТАТ(ГОД(СЕГОДНЯ());4)=0;ОСТАТ(ГОД(СЕГОДНЯ());400)=0);ДАТА(ГОД(СЕГОДНЯ());2;29);ДАТА(ГОД(СЕГОДНЯ());3;1));ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(B2);ДЕНЬ(B2)))

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

    Как в Excel найти всех, кто родился в конкретный день (например, 15 мая), независимо от года?

    Используйте комбинацию функций ДЕНЬ() и МЕСЯЦ():

    1. Создайте вспомогательный столбец с формулой: =ЕСЛИ(И(ДЕНЬ(B2)=15; МЕСЯЦ(B2)=5);"Да";"")
    2. Отфильтруйте таблицу по значению "Да".

    Для динамического поиска (например, сегодняшний день) замените 15 и 5 на ДЕНЬ(СЕГОДНЯ()) и МЕСЯЦ(СЕГОДНЯ()).

    Можно ли сделать выборку по знаку зодиака?

    Да, для этого нужно создать таблицу соответствия дат и знаков зодиака, а затем использовать функцию ПРОСМОТР() или ВПР(). Пример:

    1. Создайте на отдельном листе таблицу с границами дат и знаками зодиака (например, "21.01-19.02" → "Водолей").
    2. В вспомогательном столбце используйте формулу:
      =ВПР(ДАТА(ГОД(B2);МЕСЯЦ(B2);ДЕНЬ(B2));Зодиак!A:B;2;ИСТИНА)

      где Зодиак!A:B — диапазон с таблицей соответствия.

    3. Отфильтруйте по нужному знаку.
    Как экспортировать отфильтрованные данные в отдельный файл?

    Есть два способа:

    1. Копирование видимых ячеек:
      1. Примените фильтр.
      2. Выделите отфильтрованные данные → Главная → Найти и выделить → Выделить видимые ячейки.
      3. Скопируйте (Ctrl+C) и вставьте в новый файл (Ctrl+V).
    2. Power Query:
      1. Загрузите данные в Power Query и отфильтруйте их там.
      2. Нажмите Закрыть и загрузить в... → выберите Новая книга.
    Почему функция ДАТАРАЗН() даёт неверный возраст?

    Функция ДАТАРАЗН() считает полные годы, месяцы и дни между датами, но не учитывает, прошёл ли день рождения в текущем году. Например, если сегодня 10 января 2026 года, а дата рождения — 15 января 1990 года, ДАТАРАЗН() вернёт 33 года, хотя человеку ещё 33.

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

    =ГОД(СЕГОДНЯ())-ГОД(B2)-ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(B2);ДЕНЬ(B2))>СЕГОДНЯ();1;0)
    Как сделать выборку по китайскому гороскопу (году животного)?

    Китайский гороскоп основан на 12-летнем цикле, где каждый год соответствует животному (Крыса, Бык, Тигр и т.д.). Чтобы определить животное по году рождения:

    1. Создайте таблицу соответствия на отдельном листе (например, "1984" → "Крыса", "1985" → "Бык").
    2. В вспомогательном столбце используйте формулу:
      =ВПР(ГОД(B2);Гороскоп!A:B;2;ЛОЖЬ)

      где Гороскоп!A:B — диапазон с таблицей соответствия.

    3. Отфильтруйте по нужному животному.

    Для автоматизации можно использовать функцию ОСТАТ():

    =ВЫБОР(ОСТАТ(ГОД(B2)-1984;12)+1;"Крыса";"Бык";"Тигр";"Кролик";"Дракон";"Змея";"Лошадь";"Коза";"Обезьяна";"Петух";"Собака";"Свинья")