Работа с датами рождения в Microsoft Excel — одна из самых востребованных задач при обработке кадровых данных, списков клиентов или учебных журналов. Казалось бы, что может быть проще: выбрать столбец с датами и применить стандартный фильтр. Но на практике пользователи сталкиваются с массой нюансов: как отфильтровать людей старше 18 лет? Как выделить тех, у кого день рождения в текущем месяце? Или как автоматически обновлять фильтр при изменении текущей даты?
В этой статье мы разберём 5 практических способов фильтрации по дате рождения — от базовых инструментов до продвинутых приёмов с формулами. Вы узнаете, как использовать автофильтр, расширенный фильтр, условное форматирование и даже Power Query для работы с возрастными категориями. А в конце вас ждёт FAQ с ответами на самые частые вопросы.
Перед тем как приступить, убедитесь, что ваши данные правильно структурированы. Даты рождения должны быть в формате ДД.ММ.ГГГГ (или аналогичном), а не текстом. Если Excel воспринимает даты как строки, воспользуйтесь функцией =ДАТАЗНАЧ() для преобразования.
1. Базовый автофильтр: как отфильтровать даты по диапазону
Самый простой способ — использовать встроенный автофильтр. Он позволяет быстро отсеять записи по заданному периоду, например, найти всех, кто родился в определённом году или месяце.
Как включить автофильтр:
- Выделите заголовок столбца с датами рождения (включая шапку таблицы).
- Перейдите на вкладку
Данные→Фильтр(или нажмитеCtrl+Shift+L). - Нажмите на стрелку фильтра в заголовке столбца.
В открывшемся меню выберите Фильтры по дате. Здесь доступны опции:
- 📅 Равно — точная дата (например, 15.05.1990).
- 📊 До/После — диапазон дат (например, все, кто родился до 01.01.2000).
- 🔄 Между — интервал (например, с 01.01.1980 по 31.12.1989).
- 📅 Завтра/Сегодня/На этой неделе — динамические фильтры (полезно для напоминаний о днях рождения).
Пример: чтобы найти всех, кто родился в 1990-х годах, выберите Между и укажите диапазон 01.01.1990 — 31.12.1999.
2. Фильтрация по возрасту: как посчитать и отсортировать
Часто требуется не просто отфильтровать даты, а выделить людей определенного возраста. Для этого нужно добавить вычисляемый столбец с текущим возрастом, а затем применить фильтр.
Формула для расчёта возраста:
=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)
где A2 — ячейка с датой рождения.
Пошаговая инструкция:
- Добавьте новый столбец рядом с датами рождения (например, "Возраст").
- Введите формулу в первую ячейку столбца и протяните её вниз.
- Примените автофильтр к столбцу "Возраст".
- Выберите
Числовые фильтры→Больше чем(например, 18 для совершеннолетних).
Если вам нужно динамически обновлять возраст при открытии файла, используйте эту модификацию формулы:
=ЕСЛИ(A2="";"";ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25))
Добавить столбец "Возраст"|Проверить формат дат в исходном столбце|Ввести формулу с функцией СЕГОДНЯ()|Применить автофильтр к новому столбцу|Убедиться, что возраст обновляется автоматически-->
3. Расширенный фильтр: сложные условия по датам
Когда нужны многоуровневые условия (например, "родился до 2000 года ИЛИ старше 30 лет"), стандартный автофильтр не подходит. Здесь поможет расширенный фильтр.
Пример задачи: найти всех, кто родился в зимние месяцы (декабрь, январь, февраль) И старше 25 лет.
Алгоритм действий:
- Создайте отдельный диапазон критериев (например, на другом листе).
- В первой строке укажите заголовки:
Дата рожденияиВозраст. - Во второй строке введите условия:
- Для даты:
>=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: Выделить тех, у кого день рождения в текущем месяце.
- Выделите столбец с датами рождения.
- Перейдите в
Главная→Условное форматирование→Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу:
=И(МЕСЯЦ(A2)=МЕСЯЦ(СЕГОДНЯ()); ДЕНЬ(A2)>=ДЕНЬ(СЕГОДНЯ())) - Задайте формат (например, зелёный фон).
Пример 2: Выделить даты рождения старше 50 лет красным цветом.
=ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25)>50
Преимущество метода: данные остаются видимыми, но ключевая информация подсвечивается. Это удобно для мониторинга приближающихся дней рождения сотрудников или клиентов, когда скрывать записи нецелесообразно.
5. Power Query: автоматизация фильтрации по датам
Для работы с большими массивами данных (тысячи строк) или регулярно обновляемыми отчётами удобно использовать Power Query — инструмент для преобразования и очистки данных.
Как отфильтровать даты рождения в Power Query:
- Выделите таблицу и перейдите в
Данные→Из таблицы/диапазона(илиПолучить данные→Из файла/базы данных). - В открывшемся редакторе Power Query выберите столбец с датами рождения.
- Нажмите на стрелку фильтра и выберите:
- 📅 Фильтры по дате → Между (для диапазона).
- 🔢 Числовые фильтры → Больше (если предварительно рассчитали возраст).
Добавить столбец → Настраиваемый столбец и введите формулу:
=DateTime.LocalNow().Year - [Дата рождения].Year - IIf(DateTime.LocalNow().Month < [Дата рождения].Month Or (DateTime.LocalNow().Month = [Дата рождения].Month And DateTime.LocalNow().Day < [Дата рождения].Day), 1, 0)
Закрыть и загрузить, чтобы вернуть данные в 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: Фильтр с формулой
- Добавьте столбец "Дней до ДР" с формулой:
=ЕСЛИ(A2="";"";ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(A2);ДЕНЬ(A2))-СЕГОДНЯ())Эта формула рассчитывает, сколько дней осталось до ближайшего дня рождения (учитывая текущий год).
- Примените автофильтр к новому столбцу и выберите
Между0и7.
Способ 2: Расширенный фильтр с динамическим критерием
- Создайте отдельную ячейку (например,
D1) с формулой:=СЕГОДНЯ()+7(это будет верхняя граница диапазона).
- В диапазоне критериев для расширенного фильтра укажите:
Дней до ДР <=7 - Или используйте формулу в критериях:
=И(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(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)
Убедитесь, что в ячейках нет текстовых значений (например, пустых строк или ошибок #ЗНАЧ!).