Работа с датами рождения в Microsoft Excel — одна из самых востребованных задач при обработке персональных данных, кадровых списков или клиентских баз. Кажется, что отфильтровать записи по возрасту или периоду рождения должно быть просто, но на практике пользователи сталкиваются с массой нюансов: от неправильного формата ячеек до ошибок в формулах. Эта статья поможет разобраться, как грамотно настроить фильтрацию, избегая типичных ошибок.
Мы рассмотрим не только базовые инструменты вроде автофильтра, но и продвинутые техники с использованием функций ДАТА(), ГОД(), РАЗНДАТ(), а также покажем, как работать с условным форматированием для визуального выделения нужных записей. Особое внимание уделим обработке больших массивов данных — когда стандартные методы перестают работать эффективно.
Важно: все примеры в статье актуальны для Excel 2016–2026 (включая Microsoft 365) и Excel Online. Если вы используете более ранние версии (2010–2013), некоторые функции могут требовать адаптации.
1. Подготовка данных: почему Excel не распознаёт даты рождения
Прежде чем фильтровать список по датам рождения, убедитесь, что Excel воспринимает их именно как даты, а не как текст. Это критично: если ячейка содержит текстовое значение "15.05.1990" вместо настоящей даты, ни один фильтр не сработает корректно.
Как проверить формат:
- 🔍 Выделите столбец с датами рождения и посмотрите на выравнивание: даты по умолчанию выравниваются по правому краю, текст — по левому.
- 📅 Кликните правой кнопкой по ячейке →
Формат ячеек→ вкладкаЧисло. Если выбран форматТекстовыйилиОбщий, данные нужно конвертировать. - 🛠️ Используйте функцию
=ДАТАЗНАЧ()для преобразования текста в дату:
(где=ДАТАЗНАЧ(A2)A2— ячейка с текстовой датой).
Типичная ошибка: даты в формате ДД.ММ.ГГГГ из внешних источников (например, экспортированные из 1С или Google Sheets) часто импортируются как текст. Чтобы исправить это для всего столбца:
- Вставьте вспомогательный столбец рядом с датами.
- Введите формулу
=ДАТАЗНАЧ(B2)и протяните её вниз. - Скопируйте результаты (
Ctrl+C) и вставьте их поверх исходных данных с помощьюСпециальная вставка → Значения.
2. Базовый способ: автофильтр по дате рождения
Самый простой метод — использовать встроенный автофильтр. Он подходит для одноразовых задач и небольших таблиц (до 10 000 строк).
Пошаговая инструкция:
- Выделите заголовок столбца с датами рождения (например,
"Дата рождения"). - Перейдите на вкладку
Данные→ нажмитеФильтр(или используйте горячие клавишиCtrl+Shift+L). - Кликните по стрелке фильтра в заголовке столбца → выберите
Фильтры по дате. - Укажите нужный критерий:
До...,После...,Между...илиПользовательский фильтр.
Пример: чтобы найти всех, кто родился в 1990-х годах, выберите:
Фильтры по дате → Между... → 01.01.1990 и 31.12.1999.
| Критерий фильтра | Пример использования | Результат |
|---|---|---|
Равно... |
15.05.1985 |
Все записи с точной датой рождения |
До... |
01.01.2000 |
Родившиеся до 2000 года (включительно) |
После... |
31.12.1999 |
Родившиеся с 2000 года по сегодняшний день |
Между... |
01.01.1980 и 31.12.1989 |
Родившиеся в 1980-х годах |
Ограничение метода: автофильтр не сохраняет настройки после закрытия файла. Если вам нужно регулярно фильтровать данные по одним и тем же критериям, рассмотрите расширенный фильтр или сводные таблицы (о них — далее).
3. Расширенный фильтр: для сложных условий
Когда нужно отфильтровать данные по нескольким критериям одновременно (например, дата рождения и пол и город), автофильтр бессилен. Здесь поможет расширенный фильтр.
Алгоритм действий:
- Создайте диапазон критериев над или рядом с таблицей. Например:
A1: "Дата рождения" | B1: "Пол"
A2: ">01.01.1990" | B2: "Ж"
- Перейдите на вкладку
Данные→Сортировка и фильтр→Дополнительно. - В окне настройки укажите:
- 📌
Исходный диапазон— ваша таблица с данными (включая заголовки). - 📌
Диапазон условий— ячейки с критериями (в нашем примереA1:B2). - 📌 Отметьте
Скопировать результат в другое место, если нужно вывести отфильтрованные данные на новый лист.
- 📌
Ключевой нюанс: в диапазоне критериев названия столбцов должны точно совпадать с заголовками в исходной таблице (включая регистр и пробелы). Иначе фильтр не сработает.
Пример сложного фильтра: найти женщин, родившихся в весенние месяцы (март–май) 1985–1995 годов из Москвы. Диапазон критериев будет выглядеть так:
A1: "Дата рождения" | B1: "Пол" | C1: "Город"
A2: ">01.03.1985" | B2: "Ж" | C2: "Москва"
A3: "<01.06.1995"
Создать диапазон критериев с точными заголовками|
Проверить формат дат в критериях (должен совпадать с исходными данными)|
Убедиться, что в критериях нет пустых строк между условиями|
Выбрать опцию "Скопировать результат", если нужна отдельная выборка-->
4. Фильтрация по возрасту (с учётом текущей даты)
Часто требуется не просто отфильтровать по дате рождения, а найти людей определённого возраста или возрастной группы. Для этого нужно вычислить возраст на сегодняшний день и фильтровать уже по нему.
Способы расчёта возраста:
- 📅 Функция РАЗНДАТ() (самый точный метод):
=РАЗНДАТ(B2;СЕГОДНЯ();"y")где
B2— ячейка с датой рождения. Аргумент"y"возвращает полные годы. - 🔢 Формула с ДАТА() и ГОД() (альтернатива для старых версий Excel):
=ГОД(СЕГОДНЯ())-ГОД(B2)-ЕСЛИ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(B2);ДЕНЬ(B2))>СЕГОДНЯ();1;0) - 📊 Динамический возраст: если нужно учитывать не сегодняшнюю дату, а другую (например, на 31.12.2023), замените
СЕГОДНЯ()наДАТА(2023;12;31).
После добавления столбца с возрастом примените автофильтр или расширенный фильтр к нему. Например, чтобы найти всех в возрасте от 25 до 35 лет:
- Добавьте столбец с формулой
=РАЗНДАТ(B2;СЕГОДНЯ();"y"). - Примените фильтр к новому столбцу:
Числовые фильтры → Между... → 25 и 35.
Почему РАЗНДАТ() может давать неточный возраст?
Функция РАЗНДАТ() считает разницу в полных годах, но не учитывает, прошёл ли уже день рождения в текущем году. Например, если сегодня 15.03.2026, а дата рождения 20.03.1990, функция вернёт 33, хотя человеку ещё 33 года не исполнилось. Для точного расчёта используйте модифицированную формулу с проверкой месяца и дня.
5. Динамическая фильтрация с функциями ФИЛЬТР() и ДВССЫЛ() (Excel 365)
В Excel 365 и Excel Online появились мощные функции для динамической фильтрации: ФИЛЬТР() и ДВССЫЛ(). Они позволяют создавать автоматически обновляемые выборки без ручного применения фильтров.
Пример 1: отобразить всех, кто родился в текущем месяце (для поздравлений):
=ФИЛЬТР(
A2:D100; -- диапазон данных
МЕСЯЦ(B2:B100)=МЕСЯЦ(СЕГОДНЯ()); -- условие: месяц рождения = текущий месяц
"Нет данных"
)
Где B2:B100 — столбец с датами рождения.
Пример 2: найти сотрудников старше 50 лет из конкретного отдела:
=ФИЛЬТР(
A2:D100;
(РАЗНДАТ(B2:B100;СЕГОДНЯ();"y")>50) * (D2:D100="Бухгалтерия");
"Нет сотрудников"
)
Преимущества метода:
- ⚡ Автоматическое обновление: выборка меняется при изменении исходных данных или текущей даты.
- 🔗 Связь с другими функциями: результат можно сразу использовать в
СУММ(),СЧЁТ()и т. д. - 📱 Работа в облаке: функции поддерживаются в Excel Online и мобильной версии.
6. Визуальная фильтрация: условное форматирование
Если нужно не скрывать строки, а просто выделить записи по дате рождения (например, для быстрого визуального анализа), используйте условное форматирование.
Инструкция:
- Выделите столбец с датами рождения.
- Перейдите на вкладку
Главная→Условное форматирование→Создать правило. - Выберите
Использовать формулу для определения форматируемых ячеек. - Введите формулу в зависимости от задачи:
- 🎂 Выделить тех, кто родился в текущем месяце:
=МЕСЯЦ(B2)=МЕСЯЦ(СЕГОДНЯ()) - 👵 Выделить пенсионеров (старше 60 лет):
=РАЗНДАТ(B2;СЕГОДНЯ();"y")>60 - 🎉 Выделить юбиляров (кратные 10 лет):
=ОСТАТ(РАЗНДАТ(B2;СЕГОДНЯ();"y");10)=0
- 🎂 Выделить тех, кто родился в текущем месяце:
ОК.Совет: чтобы правило работало для всей таблицы (а не только для выделенного столбца), используйте абсолютные ссылки на заголовок. Например, для диапазона B2:B100 формула должна ссылаться на $B2.
7. Ошибки и решения: почему фильтр не работает
Даже опытные пользователи сталкиваются с проблемами при фильтрации дат. Вот самые распространённые ошибки и способы их исправления:
| Проблема | Причина | Решение |
|---|---|---|
| Фильтр не находит даты | Дата хранится как текст | Используйте ДАТАЗНАЧ() или измените формат ячейки |
| Некорректный возраст | Формула не учитывает текущий месяц/день | Замените РАЗНДАТ() на расширенную формулу с проверкой |
| Расширенный фильтр не работает | Не совпадают заголовки в критериях | Проверьте регистр и пробелы в названиях столбцов |
| Фильтр "Между..." не включает граничные даты | Excel интерпретирует "между" как строгое неравенство | Добавьте/уберите 1 день к граничным датам |
| Функция ФИЛЬТР() возвращает #ИМЯ? | Неподдерживаемая версия Excel | Обновите Excel или используйте альтернативные методы |
Критическая ошибка: если после фильтрации часть данных пропадает без возможности вернуть, проверьте:
- 🔍 Не применён ли фильтр по цвету (вкладка
Данные → Сортировка и фильтр → Фильтр по цвету). - 📊 Не скрыты ли строки вручную (выделите таблицу → правая кнопка →
Отменить скрытие). - 🔄 Не включён ли режим таблицы с собственными фильтрами (вкладка
Конструктор → Стили таблиц).
Как вернуть исходные данные после ошибочного фильтра?
Если вы применили автофильтр и потеряли данные из виду, не паникуйте:
1. Нажмите на стрелку фильтра в заголовке столбца.
2. Выберите (Выделить всё) — это сбросит фильтр для данного столбца.
3. Для полного сброса фильтров используйте Данные → Фильтр → Очистить или Ctrl+Shift+L.
⚠️ Внимание: При работе с большими таблицами (более 50 000 строк) автофильтр может тормозить или выдавать ошибку. В этом случае разбейте данные на несколько листов или используйте Power Query (вкладка Данные → Получить данные).
FAQ: Частые вопросы по фильтрации дат рождения
Как отфильтровать даты рождения по знаку зодиака?
Создайте вспомогательный столбец с формулой, определяющей знак зодиака по дате, затем отфильтруйте по нему. Пример формулы:
=ВЫБОР(
МЕСЯЦ(B2);
ЕСЛИ(ДЕНЬ(B2)<=19;"Козерог";"Водолей");
ЕСЛИ(ДЕНЬ(B2)<=18;"Водолей";"Рыбы");
...
ЕСЛИ(ДЕНЬ(B2)<=21;"Скорпион";"Стрелец")
)
Полный список условий для всех знаков можно найти в справочнике по знакам зодиака.
Можно ли фильтровать даты рождения по дню недели (например, все кто родился в понедельник)?
Да, используйте функцию ДЕНЬНЕД() во вспомогательном столбце:
=ДЕНЬНЕД(B2;2)
Аргумент 2 указывает, что неделя начинается с понедельника (1 — воскресенье, 2 — понедельник, 3 — вторник и т. д.). Затем отфильтруйте столбец по числу 1 (понедельник).
Как посчитать количество людей, родившихся в конкретном году?
Используйте функцию СЧЁТЕСЛИ():
=СЧЁТЕСЛИ(B2:B100;">=01.01.1990")-СЧЁТЕСЛИ(B2:B100;">=01.01.1991")
Эта формула считает всех, кто родился в 1990 году. Для динамического года замените 1990 на ссылку на ячейку с нужным годом.
Почему при фильтрации по возрасту некоторые записи пропадают?
Вероятно, в данных есть пустые ячейки или ошибочные даты (например, 00.00.0000). Проверьте столбец с датами на наличие ошибок:
- Добавьте фильтр по столбцу с датами.
- Выберите
(Пустые)— если есть такие записи, они будут выделены. - Исправьте или удалите ошибочные данные.
Как экспортировать отфильтрованные данные в отдельный файл?
Способы:
- Копирование: Примените фильтр → выделите видимые ячейки (
Alt+;) → скопируйте (Ctrl+C) → вставьте в новый файл. - Расширенный фильтр: В настройках отметьте
Скопировать результат в другое местои укажите диапазон на новом листе. - Power Query: Загрузите данные в
Power Query→ отфильтруйте → экспортируйте как новый файл (Главная → Закрыть и загрузить в...).