Расчёт возраста в Microsoft Excel — задача, с которой сталкиваются кадровые специалисты, бухгалтеры, учителя и даже обычные пользователи при составлении семейных деревьев или планировании мероприятий. На первый взгляд кажется, что достаточно вычесть дату рождения из текущей даты, но на практике всё сложнее: нужно учитывать месяцы, дни, високосные годы и даже региональные форматы отображения дат. Ошибка в формуле может привести к тому, что человек "постареет" на год раньше времени или, наоборот, останется "вечно молодым" в ваших расчётах.
В этой статье мы разберём 5 надёжных способов вычисления возраста — от простейших арифметических операций до профессиональных функций вроде РАЗНДАТ (или DATEDIF в английской версии). Вы узнаете, как избежать типичных ошибок при работе с датами до 1900 года, как автоматически обновлять возраст при открытии файла, и почему иногда Excel "округляет" годы не в вашу пользу. А для тех, кто работает с большими массивами данных, мы подготовили таблицу сравнения методов по точности и скорости вычислений.
Если вы никогда раньше не работали с датами в Excel, не переживайте: все формулы подробно разобраны на реальных примерах. Для опытных пользователей — продвинутые приёмы с использованием ЕСЛИ, И и динамических массивов. В конце статьи — FAQ с ответами на самые частые вопросы, включая расчёт возраста "по состоянию на конкретную дату" (например, на 31.12.2023) и обработку пустых ячеек.
1. Простейший метод: вычитание дат с округлением
Самый интуитивный способ — вычесть дату рождения из текущей даты и разделить результат на 365. Например, если сегодня 15.05.2026, а дата рождения 20.07.1990, формула будет выглядеть так:
=ОКРУГЛВНИЗ((СЕГОДНЯ()-B2)/365;0)
Где B2 — ячейка с датой рождения. Функция ОКРУГЛВНИЗ гарантирует, что Excel не добавит лишний год, если день рождения ещё не наступил.
- ✅ Плюсы: простота, работает во всех версиях Excel.
- ❌ Минусы: не учитывает високосные годы (погрешность до 1 дня за 4 года).
- 🔄 Альтернатива: замена
365на365,25для учёта високосных лет.
Важно: Если дата рождения указана как текст (например, "20.07.1990" вместо формата даты), Excel вернёт ошибку. Чтобы исправить это, используйте функцию ДАТАЗНАЧ:
=ОКРУГЛВНИЗ((СЕГОДНЯ()-ДАТАЗНАЧ(B2))/365;0)
2. Функция РАЗНДАТ (DATEDIF): профессиональный подход
Функция РАЗНДАТ (или DATEDIF в английской версии Excel) специально создана для вычисления разницы между датами в годах, месяцах или днях. Её главный плюс — учёт календарных особенностей, включая високосные годы. Синтаксис:
=РАЗНДАТ(дата_рождения; СЕГОДНЯ(); "Y")
Где "Y" — код для вывода полных лет. Другие варианты:
"M"— полные месяцы между датами."D"— полные дни."YM"— месяцы без учёта лет (например, разница между01.01.2020и15.03.2020вернёт2)."MD"— дни без учёта месяцев и лет."YD"— дни с начала года (игнорируя годы).
Пример: Чтобы получить возраст в виде "25 лет, 3 месяца, 10 дней", комбинируем функции:
=РАЗНДАТ(B2;СЕГОДНЯ();"Y") & " лет, " & РАЗНДАТ(B2;СЕГОДНЯ();"YM") & " мес., " & РАЗНДАТ(B2;СЕГОДНЯ();"MD") & " дн."
Почему РАЗНДАТ не документирована в Excel?
Функция РАЗНДАТ унаследована из Lotus 1-2-3 и сохранена для совместимости. Microsoft не рекомендует её использовать в новых проектах, но она остаётся самой точной для расчёта возраста.
⚠️ Внимание: В Excel для Mac функцияDATEDIFможет возвращать ошибку#ИМЯ?, если регион системы настроен на русский язык. Решение: заменитеDATEDIFнаРАЗНДАТили измените язык интерфейса на английский.
3. Динамический возраст: автоматическое обновление при открытии файла
Если вам нужно, чтобы возраст пересчитывался каждый раз при открытии файла (например, для актуальных отчётов), используйте комбинацию СЕГОДНЯ() с функцией РАЗНДАТ. Однако есть нюанс: Excel по умолчанию не обновляет формулы с СЕГОДНЯ() вручную. Чтобыforced recalculation:
- Перейдите в
Формулы → Вычисления → Параметры вычислений. - Выберите
Автоматически(если не стоит). - Для принудительного пересчёта нажмите
F9.
Продвинутый вариант: Если файл открывают разные пользователи с разными системными датами, используйте ТДАТА() (текущая дата и время) вместо СЕГОДНЯ():
=РАЗНДАТ(B2; ТДАТА(); "Y")
4. Расчёт возраста на конкретную дату (не текущую)
Часто требуется узнать, сколько человеку было лет на определённую дату — например, на момент устройства на работу или получения права. Для этого замените СЕГОДНЯ() на фиксированную дату в формате ДАТА(год;месяц;день):
=РАЗНДАТ(B2; ДАТА(2020;5;15); "Y")
Пример: Узнаем возраст сотрудника на дату приёма на работу (15.03.2018):
=РАЗНДАТ(B2; ДАТА(2018;3;15); "Y") & " лет, " & РАЗНДАТ(B2; ДАТА(2018;3;15); "YM") & " мес."
Критическая особенность: Если дата в будущем (например, вы ошиблись и указали ДАТА(2026;1;1)), Excel вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, оберните формулу в ЕСЛИОШИБКА:
=ЕСЛИОШИБКА(РАЗНДАТ(B2; ДАТА(2026;1;1); "Y"); "Дата в будущем")
5. Расчёт стажа работы или срока службы
Алгоритм для стажа аналогичен расчёту возраста, но здесь важно учитывать неполные периоды. Например, если сотрудник проработал 5 лет и 11 месяцев, в отчёте может потребоваться указать "5 лет" (если округление в меньшую сторону) или "6 лет" (если в большую).
Формулы для разных сценариев:
| Цель | Формула | Пример результата |
|---|---|---|
| Точный стаж в годах и месяцах | =РАЗНДАТ(B2;СЕГОДНЯ();"Y") & " г. " & РАЗНДАТ(B2;СЕГОДНЯ();"YM") & " мес." | 5 г. 11 мес. |
| Округление вверх (до полного года) | =ОКРУГЛВВЕРХ(РАЗНДАТ(B2;СЕГОДНЯ();"Y")+РАЗНДАТ(B2;СЕГОДНЯ();"YM")/12;0) | 6 |
| Округление вниз | =РАЗНДАТ(B2;СЕГОДНЯ();"Y") | 5 |
| Стаж в днях | =РАЗНДАТ(B2;СЕГОДНЯ();"D") | 2190 |
Для кадровых отчётов часто требуется указать стаж в формате "X лет Y месяцев Z дней". Используйте:
=РАЗНДАТ(B2;СЕГОДНЯ();"Y") & " л. " & РАЗНДАТ(B2;СЕГОДНЯ();"YM") & " м. " & РАЗНДАТ(B2;СЕГОДНЯ();"MD") & " д."
Убедитесь, что дата приёма в формате "Дата"|Проверьте отсутствие текста в ячейках (например, "с 2018")|Используйте ЕСЛИ для обработки пустых ячеек|Сравните результат с календарём для тестовых дат-->
6. Типичные ошибки и как их избежать
Даже опытные пользователи Excel допускают ошибки при работе с датами. Вот самые распространённые:
- Дата в текстовом формате: Если ячейка содержит
"15.05.1990"(как текст), а не дату, формулы вернут ошибку. Решение: используйтеДАТАЗНАЧили преобразуйте формат черезГлавная → Число → Дата. - Региональные настройки: В американском Excel даты вводятся как
MM/DD/YYYY, а в российском —DD.MM.YYYY. Если вы копируете файл между регионами, даты могут "сломаться". Решение: используйтеДАТА(год;месяц;день)для универсальности. - Дата до 1900 года: Excel не поддерживает даты раньше
01.01.1900. Для исторических расчётов используйте альтернативные методы (например, ручной ввод разницы в годах). - Отрицательный возраст: Если дата рождения позже текущей (опечатка), Excel вернёт ошибку. Решение: добавьте проверку
ЕСЛИ:
=ЕСЛИ(B2>СЕГОДНЯ(); "Ошибка: дата в будущем"; РАЗНДАТ(B2;СЕГОДНЯ();"Y"))
⚠️ Внимание: При копировании формул сСЕГОДНЯ()в другие ячейки Excel автоматически не обновляет ссылки. Чтобы избежать ошибок, используйте абсолютные ссылки (например,$B$2) или именованные диапазоны.
FAQ: Ответы на частые вопросы
Как рассчитать возраст в Excel Online или Google Sheets?
В Excel Online и Google Sheets работают те же формулы, но:
- В Google Sheets функция называется
DATEDIF(даже в русской версии). - Функция
СЕГОДНЯ()в онлайн-версиях обновляется при каждом открытии файла или изменении данных.
Пример для Google Sheets:
=DATEDIF(B2; TODAY(); "Y")
Можно ли рассчитать возраст без указания года (например, только по месяцу и дню)?
Да, но результат будет приблизительным. Например, чтобы узнать, сколько полных месяцев прошло с даты рождения в текущем году:
=РАЗНДАТ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(B2); ДЕНЬ(B2)); СЕГОДНЯ(); "M")
Эта формула создаёт дату в текущем году с тем же месяцем и днём, что и в ячейке B2, а затем считает разницу в месяцах.
Как посчитать средний возраст группы людей?
Используйте функцию СРЗНАЧ для столбца с возрастами. Например, если возрасты рассчитаны в диапазоне C2:C100:
=СРЗНАЧ(C2:C100)
Чтобы исключить пустые ячейки, добавьте ЕСЛИ:
=СРЗНАЧ(ЕСЛИ(C2:C100<>""; C2:C100))
Примечание: В Excel 365 это формула массива — подтверждайте её Ctrl+Shift+Enter в старых версиях.
Почему моя формула возвращает ###### вместо возраста?
Это означает, что столбец слишком узкий для отображения результата. Растяните его вручную или используйте Главная → Формат → Автоподбор ширины столбца.
Другие возможные причины:
- Отрицательное значение (дата рождения в будущем).
- Неправильный формат ячейки (например, "Текст" вместо "Общий").
Как рассчитать возраст в годах с десятичной точностью (например, 25.3 года)?
Используйте формулу:
=РАЗНДАТ(B2; СЕГОДНЯ(); "Y") + РАЗНДАТ(B2; СЕГОДНЯ(); "YM")/12
Этот метод учитывает месяцы как доли года. Например, 6 месяцев = 0.5 года.