Как в Excel вычислить возраст по двум датам: 3 рабочих метода с формулами

Если при вычитании даты рождения из текущей даты в Excel вы получаете некорректный возраст (например, ###### вместо числа или значение с ошибкой формата), проблема кроется в неправильном использовании функций для работы с датами. Стандартное арифметическое вычитание =СЕГОДНЯ()-A1 вернёт количество дней, но не учтёт переходы между месяцами и годами — поэтому для точного расчёта возраста в годах, месяцах или полных периодах нужны специализированные формулы.

В 90% случаев ошибки возникают из-за трёх причин: неверный формат ячеек (текст вместо даты), игнорирование високосных лет или попытка вычесть будущую дату из прошлой. Например, если в ячейке A1 записана дата как текст (15.05.1990 без преобразования в формат даты), Excel не сможет корректно вычислить разницу. В этой статье разберём 3 надёжных метода расчёта возраста — от простого до продвинутого, с учётом всех нюансов календаря.

Почему простое вычитание дат не работает для возраста

При попытке вычесть одну дату из другой (=B1-A1, где B1 — текущая дата, A1 — дата рождения) Excel возвращает количество дней между ними. Например, для человека, родившегося 1 января 2000 года, формула вернёт число порядка 8000–9000 (дней). Чтобы преобразовать это в годы, нужно разделить на 365 — но такой подход даст погрешность до 1–2 дней из-за високосных лет.

Ключевые проблемы простого вычитания:

  • 📅 Игнорирование високосных лет: 2020, 2026 и другие годы с 29 февраля добавят лишний день в расчёт.
  • 🔄 Некорректная обработка месяцев: если дата рождения 31 декабря, а текущая дата — 1 января следующего года, разница составит 1 день, хотя фактически прошёл 1 год.
  • 📊 Отсутствие дробной части: возраст в формате "25 лет и 3 месяца" не получится отобразить без дополнительных функций.

Для точного расчёта используйте специализированные функции, которые учитывают календарную логику. Например, функция ДАТАРАЗН (или её англоязычный аналог DATEDIF) автоматически корректирует результат с учётом количества дней в каждом месяце.

⚠️ Внимание: Если после ввода формулы вы видите ошибку #ИМЯ?, проверьте регистр функции. В русскоязычной версии Excel используется ДАТАРАЗН, в англоязычной — DATEDIF. Также убедитесь, что обе даты введены как даты (формат ячейки — Дата, а не Текст).

Метод 1: Функция ДАТАРАЗН (DATEDIF) — самый точный способ

Функция ДАТАРАЗН специально разработана для вычисления разницы между датами в годах, месяцах или днях. Её синтаксис:

=ДАТАРАЗН(дата_начала; дата_окончания; единица_измерения)

Где единица_измерения может принимать значения:

  • "Y" — полные годы;
  • "M" — полные месяцы;
  • "D" — дни;
  • "YM" — месяцы без учёта годов;
  • "YD" — дни без учёта годов;
  • "MD" — дни без учёта месяцев и годов.

Примеры использования:

Формула Результат (для даты рождения 15.05.1990, текущая дата 20.06.2023) Описание
=ДАТАРАЗН(A1;СЕГОДНЯ();"Y") 33 Полных лет
=ДАТАРАЗН(A1;СЕГОДНЯ();"YM") 1 Месяцев сверх полных лет
=ДАТАРАЗН(A1;СЕГОДНЯ();"MD") 5 Дней сверх полных месяцев
=ДАТАРАЗН(A1;СЕГОДНЯ();"Y")&" лет, "&ДАТАРАЗН(A1;СЕГОДНЯ();"YM")&" мес., "&ДАТАРАЗН(A1;СЕГОДНЯ();"MD")&" дн." 33 лет, 1 мес., 5 дн. Полный возраст с разбивкой

Чтобы объединить годы, месяцы и дни в одну ячейку, используйте оператор конкатенации (&). Например:

=ДАТАРАЗН(A1;СЕГОДНЯ();"Y") & " г. " & ДАТАРАЗН(A1;СЕГОДНЯ();"YM") & " м. " & ДАТАРАЗН(A1;СЕГОДНЯ();"MD") & " д."

Убедитесь, что обе даты в формате даты (проверьте формат ячейки)|Используйте СЕГОДНЯ() для текущей даты|Для англоязычного Excel замените ДАТАРАЗН на DATEDIF|Объединяйте результаты через & для вывода в одной ячейке-->

Метод 2: Комбинация функций ГОД, МЕСЯЦ, ДЕНЬ — для гибких расчётов

Если функция ДАТАРАЗН по какой-то причине недоступна (например, в старых версиях Excel или в Google Sheets с ограниченной поддержкой), используйте альтернативный подход с разбивкой даты на компоненты. Формула для расчёта полных лет:

=ГОД(СЕГОДНЯ()) - ГОД(A1) - ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(A1); И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(A1); ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(A1))); 1; 0)

Разберём логику:

  1. ГОД(СЕГОДНЯ()) - ГОД(A1) — разница в годах без учёта месяцев и дней.
  2. ЕСЛИ(...) — проверка, прошёл ли день рождения в текущем году:
    • Если текущий месяц < месяца рождения или месяц совпадает, но день ещё не наступил — вычитаем 1 год.

Для вычисления полных месяцев и дней используйте аналогичные формулы:

  • 📅 Месяцы: =ЕСЛИ(ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A1); МЕСЯЦ(СЕГОДНЯ())-МЕСЯЦ(A1); МЕСЯЦ(СЕГОДНЯ())-МЕСЯЦ(A1)-1)
  • 📆 Дни: =ЕСЛИ(ДЕНЬ(СЕГОДНЯ())>=ДЕНЬ(A1); ДЕНЬ(СЕГОДНЯ())-ДЕНЬ(A1); ДЕНЬ(СЕГОДНЯ())+ДЕНЬ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())+1;0))-ДЕНЬ(A1))
⚠️ Внимание: Формула для дней учитывает разное количество дней в месяцах. Например, если дата рождения 31 января, а текущая дата 1 марта, результат будет "0 дней" (так как 28/29 февраля не хватает для полного месяца).

Функция ДАТАРАЗН (DATEDIF)|Комбинация ГОД/МЕСЯЦ/ДЕНЬ|Ручной расчёт через дни|Другой вариант-->

Метод 3: Вычисление возраста в днях с учётом високосных лет

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

=СЕГОДНЯ()-A1

Но чтобы результат отображался в днях, а не в формате даты:

  1. Выделите ячейку с формулой.
  2. Нажмите Ctrl+1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Числовой или Общий.

Для учёта високосных лет и точного подсчёта используйте функцию РАЗНДАТ (доступна в новых версиях Excel 365):

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

Преимущества метода:

  • Максимальная точность: учитывает все календарные нюансы, включая високосные годы.
  • 📈 Гибкость: результат можно преобразовать в годы, разделив на 365 (или на 365.25 для учёта високосных лет).
  • 🔍 Прозрачность: легко проверить расчёт вручную.
Как проверить високосный год в Excel?

Введите формулу =ЕСЛИ(ИЛИ(ОСТАТ(GOD(A1);400)=0; И(ОСТАТ(GOD(A1);4)=0; ОСТАТ(GOD(A1);100)<>0)); "Високосный"; "Не високосный"), где A1 — ячейка с годом.

Ошибки при расчёте возраста и как их исправить

Даже с правильными формулами можно получить некорректный результат. Рассмотрим типичные ошибки и решения:

Ошибка Причина Решение
#ИМЯ? Опечатка в названии функции или неверный регистр. Проверьте синтаксис: ДАТАРАЗН (рус.) или DATEDIF (англ.).
#ЗНАЧ! Ячейка содержит текст вместо даты. Преобразуйте данные в формат даты через Формат ячеек → Дата.
Отрицательное значение Дата рождения позже текущей даты. Поменяйте местами аргументы или проверьте корректность дат.
Некорректный возраст (на 1 год больше/меньше) Не учтён день рождения в текущем году. Используйте ДАТАРАЗН с параметром "Y" или скорректируйте формулу с ЕСЛИ.

Частая проблема — текстовый формат даты. Например, если дата введена как '15.05.1990 (с апострофом), Excel воспринимает её как текст. Чтобы исправить:

  1. Выделите ячейку с датой.
  2. В строке формул удалите апостроф (если он есть).
  3. Нажмите Enter и установите формат Дата.
=ДАТАЗНАЧ(A1), где A1 — ячейка с текстовой датой.-->

Автоматическое обновление возраста при изменении текущей даты

Если вы используете СЕГОДНЯ() в формуле, возраст будет пересчитываться автоматически при каждом открытии файла. Это удобно для динамических отчётов, но может вызывать задержки при работе с большими таблицами. Чтобы отключить автоматическое обновление:

  1. Перейдите в Файл → Параметры → Формулы.
  2. В разделе Вычисления в книге выберите Вручную.
  3. Нажмите Вычислить сейчас (клавиша F9), когда нужно обновить данные.

Для фиксации текущего возраста (например, на дату создания отчёта) замените СЕГОДНЯ() на конкретную дату:

=ДАТАРАЗН(A1;ДАТА(2023;6;20);"Y")

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

Дата рождения Дата расчёта Возраст (лет) Формула
15.05.1990 20.06.2023 33 =ДАТАРАЗН(A2;B2;"Y")
15.05.1990 01.01.2026 33 =ДАТАРАЗН(A3;B3;"Y")

Продвинутые сценарии: возраст в месяцах, кварталах, неделях

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

  • 📅 Полных месяцев (включая годы в месяцах):
=ДАТАРАЗН(A1;СЕГОДНЯ();"M")
  • 📊 Кварталы:
=ЦЕЛОЕ(ДАТАРАЗН(A1;СЕГОДНЯ();"M")/3)
  • 📆 Недели:
=ЦЕЛОЕ(ДАТАРАЗН(A1;СЕГОДНЯ();"D")/7)

Для вычисления возраста в десятичных годах (например, 25.5 лет) используйте:

=ДАТАРАЗН(A1;СЕГОДНЯ();"Y") + ДАТАРАЗН(A1;СЕГОДНЯ();"YM")/12 + ДАТАРАЗН(A1;СЕГОДНЯ();"MD")/365

Если нужно округлить результат до двух знаков после запятой:

=ОКРУГЛ(ДАТАРАЗН(A1;СЕГОДНЯ();"Y") + ДАТАРАЗН(A1;СЕГОДНЯ();"YM")/12 + ДАТАРАЗН(A1;СЕГОДНЯ();"MD")/365; 2)

FAQ: Частые вопросы по расчёту возраста в Excel

Можно ли рассчитать возраст без функции ДАТАРАЗН?

Да, используйте комбинацию функций ГОД, МЕСЯЦ, ДЕНЬ и ЕСЛИ, как описано в Методе 2. Также подойдёт вычитание дат с последующим делением на 365 (для приблизительного результата).

Почему функция ДАТАРАЗН не работает в моём Excel?

Вероятные причины:

  • Вы используете англоязычную версию — замените ДАТАРАЗН на DATEDIF.
  • Функция скрыта в вашей версии Excel (редко встречается в Excel 2016+).
  • Ошибка в аргументах — проверьте порядок дат и кавычки для единиц измерения.

Альтернатива: используйте РАЗНДАТExcel 365) или метод с ГОД/МЕСЯЦ/ДЕНЬ.

Как посчитать возраст на конкретную дату (не сегодня)?

Замените СЕГОДНЯ() на фиксированную дату в формате ДАТА(год;месяц;день). Например, для расчёта возраста на 31 декабря 2022 года:

=ДАТАРАЗН(A1;ДАТА(2022;12;31);"Y")
Можно ли рассчитать возраст в Google Sheets?

Да, в Google Sheets доступна функция DATEDIF (аналог ДАТАРАЗН). Синтаксис идентичен:

=DATEDIF(A1;TODAY();"Y")

Также работают методы с YEAR, MONTH, DAY.

Как вычислить возраст для большого списка дат?

Примените формулу ко всему столбцу:

  1. Введите формулу для первой строки (например, =ДАТАРАЗН(A2;СЕГОДНЯ();"Y")).
  2. Наведите курсор на правый нижний угол ячейки (появится крестик).
  3. Дважды кликните или протяните вниз для автозаполнения.

Для ускорения расчётов отключите автоматический пересчёт (Формулы → Вычисления → Вручную).