Расчет возраста и разницы между датами в Excel
Чтобы быстро посчитать разницу в днях, месяцах или точный возраст в Excel, используйте функцию РАЗНМЕСЯЦЕВ (DATEDIF) в сочетании с арифметическими операциями. Самый простой способ узнать количество дней — вычесть одну дату из другой (=B1-A1), а для полного возраста (годы, месяцы, дни) потребуется комбинация функций ЦЕЛОЕ, МОД и РАЗНМЕСЯЦЕВ. Ниже приведены готовые формулы для любых версий Excel.
Главный секрет: В русском Excel скрытая, но мощная функция для работы с датами называется РАЗНМЕСЯЦЕВ. Она умеет считать полные годы, месяцы и дни, игнорируя неполные периоды.
Как рассчитать разницу в днях
Самый базовый расчет — количество дней между двумя датами. В Excel даты хранятся как порядковые номера, поэтому их можно просто вычитать.
Формула:
=КОНЕЧНАЯ_ДАТА - НАЧАЛЬНАЯ_ДАТА
Пример: Если в ячейке A1 дата рождения, а в B1 текущая дата:
=B1 - A1
Не забудьте отформатировать ячейку с результатом как «Общий» или «Числовой», иначе Excel может попытаться отобразить результат снова как дату.
Рабочие дни без выходных
Если нужно исключить субботы и воскресенья (например, для расчета срока проекта), используйте функцию ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(НАЧАЛЬНАЯ_ДАТА; КОНЕЧНАЯ_ДАТА)
Эта функция автоматически пропускает выходные дни.
Подсчет полных месяцев
Для расчета количества полных месяцев между датами идеально подходит функция РАЗНМЕСЯЦЕВ. Она считает только завершившиеся месяцы.
Формула:
=РАЗНМЕСЯЦЕВ(НАЧАЛЬНАЯ_ДАТА; КОНЕЧНАЯ_ДАТА; "M")
Аргумент "M" означает месяц (Month).
Если нужно получить красивый текст вида «76 мес. 14 дн.», можно скомбинировать формулы:
=РАЗНМЕСЯЦЕВ(A1; B1; "M") & " мес. " & (ДЕНЬ(B1) - ДЕНЬ(A1)) & " дн."
Если конечная дата раньше начальной, формула вернет ошибку #ЧИСЛО!. Для защиты добавьте проверку:
=ЕСЛИ(B1<A1; "Дата в будущем"; РАЗНМЕСЯЦЕВ(A1; B1; "M"))
Вычисление полных лет (возраст)
Чтобы узнать полный возраст в годах, разделите количество месяцев на 12 и отбросьте дробную часть.
Универсальная формула (работает во всех версиях):
=ЦЕЛОЕ(РАЗНМЕСЯЦЕВ(ДАТА_РОЖДЕНИЯ; СЕГОДНЯ(); "M") / 12)
Или более короткий вариант с аргументом "Y" (Year):
=РАЗНМЕСЯЦЕВ(ДАТА_РОЖДЕНИЯ; СЕГОДНЯ(); "Y")
Альтернатива через дни: Можно разделить разницу в днях на среднее количество дней в году (365,25, чтобы учесть високосные годы):
=ЦЕЛОЕ((СЕГОДНЯ() - ДАТА_РОЖДЕНИЯ) / 365,25)
Этот метод менее точен для пограничных дат (день в день рождения), поэтому лучше использовать РАЗНМЕСЯЦЕВ.
Точный возраст: годы, месяцы и дни
Чтобы получить детальную расшифровку возраста (например, «30 лет, 5 мес., 12 дн.»), нужно собрать формулу из трех частей.
Готовая формула для копирования:
(Замените A1 на ячейку с датой рождения)
=РАЗНМЕСЯЦЕВ(A1; СЕГОДНЯ(); "Y") & " г. " &
РАЗНМЕСЯЦЕВ(A1; СЕГОДНЯ(); "YM") & " м. " &
РАЗНМЕСЯЦЕВ(A1; СЕГОДНЯ(); "MD") & " дн."
Расшифровка аргументов:
"Y"— полные годы."YM"— остаток месяцев после вычета полных лет."MD"— остаток дней после вычета полных месяцев.
Используйте функцию =СЕГОДНЯ() вместо конкретной даты, чтобы возраст обновлялся автоматически каждый день при открытии файла.
Пример детального расчета по ячейкам
Если одна длинная формула кажется сложной, разбейте расчет на столбцы:
| Ячейка | Формула | Описание |
|---|---|---|
| C1 (Годы) | =РАЗНМЕСЯЦЕВ(A1; B1; "Y") | Полные годы |
| D1 (Месяцы) | =РАЗНМЕСЯЦЕВ(A1; B1; "YM") | Оставшиеся месяцы |
| E1 (Дни) | =РАЗНМЕСЯЦЕВ(A1; B1; "MD") | Оставшиеся дни |
| F1 (Итог) | =C1 & " лет " & D1 & " мес. " & E1 & " дн." | Текстовый вывод |
Частые ошибки
- Результат отображается как дата (#####).
- Причина: Ячейка с результатом отформатирована как «Дата».
- Решение: Выделите ячейку, нажмите
Ctrl+1и выберите формат «Общий» или «Числовой».
- Ошибка #ЗНАЧ!.
- Причина: Дата записана как текст (например, «01.01.2020» с лишними пробелами или в неверном формате системы).
- Решение: Убедитесь, что даты выровнены по правому краю ячейки (признак числа). Используйте «Текст по столбцам» для исправления формата.
- Отрицательное значение дней.
- Причина: При ручном вычитании дней (
ДЕНЬ(Конец) - ДЕНЬ(Начало)) может получиться минус, если день конца месяца меньше дня начала. - Решение: Всегда используйте аргумент
"MD"в функцииРАЗНМЕСЯЦЕВ, она сама корректно обрабатывает переход через месяцы.
- Причина: При ручном вычитании дней (
FAQ
Как посчитать возраст на конкретную дату в прошлом или будущем?
Вместо функции СЕГОДНЯ() вставьте ссылку на ячейку с нужной датой или укажите дату явно: =РАЗНМЕСЯЦЕВ(A1; "31.12.2030"; "Y").
Работает ли это в старых версиях Excel (2010, 2013)?
Да, функция РАЗНМЕСЯЦЕВ присутствует во всех версиях Excel, начиная с очень ранних, хотя она не всегда отображается в списке подсказок функций. Ее нужно вводить вручную.
Как учесть високосные годы?
Функции РАЗНМЕСЯЦЕВ и ЧИСТРАБДНИ уже учитывают календарную логику, включая високосные годы. Вам не нужно добавлять дополнительные коэффициенты.