Как посчитать количество лет в Excel: формулы, нюансы и ошибки

Почему стандартное вычитание дат не всегда работает

Вы когда-нибудь пытались вычесть одну дату из другой в Excel, ожидая получить количество полных лет, но вместо этого видели дробное число вроде 3,456? Это происходит потому, что Excel хранит даты как последовательные числа — начиная с 1 января 1900 года (в Windows) или 1904 года (в Mac). Например, дата 01.01.2020 для программы — это число 43831, а 01.01.202344927. Разница между ними составит 1096 дней, но как перевести это в годы?

Проблема усложняется, если нужно учесть високосные годы, неполные периоды (например, с 15 марта 2020 по 20 апреля 2023) или специфические условия вроде "считать годом только после полных 12 месяцев". В этой статье мы разберём 5 рабочих методов, включая функции ДАТАРАЗН, ГОД, и комбинации с ЕСЛИ, а также покажем, как избежать типичных ошибок при работе с датами разных форматов.

Метод 1: Простое вычитание с округлением

Самый быстрый, но не всегда точный способ — вычесть одну дату из другой и разделить на 365. Например, для ячеек A1 (конечная дата) и B1 (начальная дата) формула будет:

=ОКРУГЛВНИЗ((A1-B1)/365; 0)

Плюсы: работает в любой версии Excel, не требует дополнительных функций. Минусы: не учитывает високосные годы (ошибка накапливается со временем) и неrounds правильно неполные годы. Например, разница между 01.01.2020 и 01.01.2026 составит 4 года, хотя фактически пройдёт 3 високосных года и 1 обычный.

  • ✅ Подходит для приблизительных расчётов (например, возраст человека "около 30 лет")
  • ❌ Не используйте для финансовых или юридических документов, где важна точность
  • 🔄 Альтернатива: =ЦЕЛОЕ((A1-B1)/365,25) — учитывает среднюю длину года с високосными

Метод 2: Функция ДАТАРАЗН (DATEDIF) — скрытый инструмент Excel

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

=ДАТАРАЗН(начальная_дата; конечная_дата; "Y")

Где "Y" — это код для вычисления полных лет. Например, =ДАТАРАЗН("15.05.2010"; "20.07.2023"; "Y") вернёт 13, потому что 20 июля 2023 года ещё не исполнилось 14 лет с 15 мая 2010.

⚠️ Внимание: ДАТАРАЗН не отображается в списке функций Excel (её нет в мастер-функций), но она работает! Вводите её вручную.
Код Что возвращает Пример результата для дат 01.01.202015.03.2023
"Y" Полные годы 3
"M" Полные месяцы (без учёта лет) 2
"D" Полные дни (без учёта месяцев и лет) 14
"YM" Месяцы без учёта лет 14
"MD" Дни без учёта месяцев и лет 14

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

=ДАТАРАЗН(B1; A1; "Y") & " лет, " & ДАТАРАЗН(B1; A1; "YM") & " месяцев"
📊 Какой метод вы чаще используете для расчёта лет в Excel?
Простое вычитание
Функцию ДАТАРАЗН
Функции ГОД/ДЕНЬ
Другое

Метод 3: Комбинация ГОД, МЕСЯЦ и ДЕНЬ для точного расчёта

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

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

Эта формула проверяет:

1. Если месяц конечной даты (A1) больше месяца начальной даты (B1) — вычитаем годы напрямую.

2. Если месяцы равны, но день в A1 больше или равен дню в B1 — тоже вычитаем годы.

3. Во всех остальных случаях (например, B1=01.03.2020, A1=28.02.2023) — отнимаем 1 год.

  • 🎯 Идеально для расчёта возраста по дате рождения
  • 📅 Учитывает високосные годы автоматически (через функцию ДЕНЬ)
  • ⚙️ Требует правильного формата дат (иначе вернёт ошибку #ЗНАЧ!)
Почему формула не работает с текстом?

Если ваши даты хранятся как текст (например, "01.01.2020"), Excel не сможет применить к ним функции ГОД/МЕСЯЦ. Используйте =ДАТАЗНАЧ() для преобразования:

=ГОД(ДАТАЗНАЧ(A1))

Метод 4: Учёт високосных лет с функцией РАЗНДАТ

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

=РАЗНДАТ(B1; A1; "Y") + (РАЗНДАТ(B1; A1; "YM") + (ДЕНЬ(A1) >= ДЕНЬ(B1))) / 12

Эта формула возвращает дробное число лет (например, 3,25 для 3 лет и 3 месяцев). Чтобы преобразовать его в полные годы, оберните в ЦЕЛОЕ:

=ЦЕЛОЕ(РАЗНДАТ(B1; A1; "Y") + (РАЗНДАТ(B1; A1; "YM") + (ДЕНЬ(A1) >= ДЕНЬ(B1))) / 12)
⚠️ Внимание: В Excel 2019 и новее функция РАЗНДАТ может выдавать ошибку при работе с датами до 1900 года. Для исторических данных используйте ДАТАРАЗН.

Используйте даты с 29 февраля (например, 2020–2026)|Сравните результат с календарём|Проверьте формат ячеек (должен быть "Дата")|Убедитесь, что в настройках Excel установлена система дат 1900 года

-->

Метод 5: Power Query для массовой обработки дат

Если вам нужно посчитать годы для тысяч строк (например, в отчёте по клиентам), ручные формулы неэффективны. Используйте Power Query:

  1. Выделите таблицу с датами → Данные → Получить данные → Из таблицы/диапазона.
  2. В редакторе Power Query добавьте столбец: Добавить столбец → Пользовательский.
  3. Введите формулу:
    =Date.Year([КонечнаяДата]) - Date.Year([НачальнаяДата]) - If Date.From([КонечнаяДата]) < Date.From(Date.StartOfYear([КонечнаяДата])) Then 1 Else 0
  4. Нажмите Закрыть и загрузить.

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

- Обрабатывает миллионы строк без тормозов.

- Автоматически обновляется при изменении исходных данных.

- Можно добавить дополнительные столбцы (например, месяцы или дни).

Типичные ошибки и как их избежать

Даже опытные пользователи Excel сталкиваются с проблемами при работе с датами. Вот самые распространённые:

  • 🗓️ Текст вместо дат: Если ячейка отображает дату как '01.01.2020 (с апострофом), Excel воспринимает её как текст. Исправляйте через ДАТАЗНАЧ или изменение формата ячейки.
  • 🔢 Неправильный формат: Дата 01-01-2020 может интерпретироваться как 1 января или 1 декабря (в зависимости от региональных настроек). Всегда используйте ДД.ММ.ГГГГ.
  • Ошибка #ЧИСЛО!: Возникает, если начальная дата позже конечной. Исправляйте местами или используйте ЕСЛИОШИБКА.
  • 📅 1900 vs 1904: В настройках Excel (Файл → Параметры → Дополнительно) проверьте, какая система дат используется. Для Windows это всегда 1900.

Чтобы проверить, правильно ли Excel распознаёт ваши даты, используйте функцию ДАТАЗНАЧ:

=ЕСЛИ(ДАТАЗНАЧ(A1)=A1; "Дата"; "Текст")

FAQ: Ответы на частые вопросы

Как посчитать годы между датами, если одна из них пустая?

Используйте ЕСЛИ для проверки на пустоту:

=ЕСЛИ(ИЛИ(A1=""; B1=""); ""; ДАТАРАЗН(B1; A1; "Y"))

Если хотя бы одна ячейка пустая, формула вернёт пустой результат.

Можно ли посчитать годы с учётом рабочих дней (исключая выходные)?

Да, но для этого нужна комбинация ДАТАРАЗН и ЧИСТРАБДНИ:

=ДАТАРАЗН(B1; A1; "Y") - (ЧИСТРАБДНИ(B1; A1) / 260)

Здесь 260 — среднее количество рабочих дней в году (5 дней × 52 недели).

Почему функция ДАТАРАЗН возвращает ошибку #ИМЯ?

Это происходит, если:

  • Вы опечатались в названии функции (правильно: ДАТАРАЗН, не ДАТРАЗН).
  • Используете неанглийскую версию Excel, где функция называется иначе (например, DATEDIFF в некоторых локализациях).
  • Вводите формулу как массив (с Ctrl+Shift+Enter), хотя это не требуется.
Как посчитать возраст в годах, месяцах и днях в одной ячейке?

Используйте эту формулу:

=ДАТАРАЗН(B1; A1; "Y") & " г. " & ДАТАРАЗН(B1; A1; "YM") & " м. " & ДАТАРАЗН(B1; A1; "MD") & " д."

Для русскоязычного отображения замените " г. " на нужные окончания (например, " год", " года", " лет" через ЕСЛИ).

Можно ли посчитать годы между датами в Excel Online?

Да, все описанные методы работают в Excel Online, кроме Power Query (доступен только в десктопной версии). Для массовой обработки используйте ДАТАРАЗН или загрузите файл в десктопный Excel.