Как посчитать в Excel, сколько месяцев прошло между двумя датами: 5 проверенных методов

Расчёт количества месяцев между двумя датами в Microsoft Excel — одна из самых востребованных задач при работе с временными интервалами. Бухгалтерам нужно определять стаж сотрудников, аналитикам — длительность проектов, а HR-специалистам — сроки испытательных периодов. Казалось бы, что может быть проще? Но даже опытные пользователи сталкиваются с подводными камнями: формулы возвращают некорректные значения, игнорируют неполные месяцы или учитывают дни вместо целых периодов.

В этой статье мы разберём 5 надёжных способов вычисления месяцев между датами — от базовой функции РАЗНДАТ (или DATEDIF в английской версии) до сложных формул с учётом календарных нюансов. Вы узнаете, как избежать ошибок при работе с 31-дневными месяцами, как округлять результаты и почему иногда Excel «врёт» на 1 месяц. А в конце — бонус: готовая таблица с формулами для копирования!

1. Базовый метод: функция РАЗНДАТ (DATEDIF) для целых месяцев

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

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

=РАЗНДАТ(нач_дата; кон_дата; "m")

Где:

  • 📅 нач_дата — ячейка с начальной датой (например, A2).
  • 📅 кон_дата — ячейка с конечной датой (например, B2).
  • 🔢 "m" — параметр, указывающий, что результат нужно вернуть в месяцах.

Пример: если в ячейке A2 указана дата 01.01.2023, а в B215.03.2023, формула вернёт 2 (полных месяца). Обратите внимание: функция игнорирует дни и округляет результат вниз до целого месяца.

2. Учёт неполных месяцев: формула с округлением

Что делать, если нужно посчитать месяцы с учётом дней? Например, с 10.01.2023 по 10.02.2023 прошёл ровно 1 месяц, а с 10.01.2023 по 25.02.2023 — уже 1 месяц и 15 дней. В этом случае базовая РАЗНДАТ вернёт только 1, хотя фактически прошло больше.

Используйте комбинацию функций РАЗНДАТ и ЕСЛИ для округления:

=ЕСЛИ(ДЕНЬ(B2)>=ДЕНЬ(A2); РАЗНДАТ(A2; B2; "m"); РАЗНДАТ(A2; B2; "m")-1)

Логика работы:

  • ✅ Если день конечной даты (B2) больше или равен дню начальной даты (A2) — возвращаем полные месяцы.
  • ❌ Если день конечной даты меньше — отнимаем 1 месяц (так как неполный месяц не учитывается).
Почему формула может вернуть отрицательное значение?

Если конечная дата (B2) раньше начальной (A2), Excel вернёт ошибку #ЧИСЛО!. Чтобы избежать этого, добавьте проверку:

=ЕСЛИ(B2=ДЕНЬ(A2); РАЗНДАТ(A2; B2; "m"); РАЗНДАТ(A2; B2; "m")-1))

3. Альтернативный способ: вычитание годов и месяцев

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

= (ГОД(B2)-ГОД(A2))*12 + (МЕСЯЦ(B2)-МЕСЯЦ(A2))

Эта формула:

  1. Вычисляет разницу в годах и умножает на 12 (чтобы получить месяцы).
  2. Добавляет разницу в месяцах между датами.

Пример: для дат 15.06.2022 и 20.11.2023 расчёт будет таким: (2023-2022)*12 + (11-6) = 17 месяцев.

⚠️ Внимание: Этот метод не учитывает дни. Если конечная дата приходится на более ранний день месяца, чем начальная (например, с 30.01.2023 по 28.02.2023), формула вернёт 1 месяц, хотя фактически прошло меньше.

4. Точный расчёт с учётом дней: формула массива

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

=РАЗНДАТ(A2; B2; "m") + ЕСЛИ(ДЕНЬ(B2)>=ДЕНЬ(A2); 0; -1) + (ДЕНЬ(B2)-ДЕНЬ(A2))/ДЕНЬ(ДАТА(ГОД(B2); МЕСЯЦ(B2)+1; 0))

Разберём по частям:

  • 📊 РАЗНДАТ(A2; B2; "m") — полные месяцы.
  • 🔄 ЕСЛИ(ДЕНЬ(B2)>=ДЕНЬ(A2); 0; -1) — корректировка на неполный месяц.
  • (ДЕНЬ(B2)-ДЕНЬ(A2))/ДЕНЬ(ДАТА(ГОД(B2); МЕСЯЦ(B2)+1; 0)) — доля дней в текущем месяце.

Пример: для интервала 10.01.202325.02.2023 формула вернёт 1.52 месяца (1 полный месяц + 15 дней из 28 в феврале).

Убедитесь, что даты в ячейках имеют формат Дата (не текст!)|Проверьте, что конечная дата не раньше начальной|Для точных расчётов используйте формат ячейки Общий или Числовой с 2 знаками после запятой|Тестируйте формулу на крайних случаях (например, 31 января → 1 марта)

-->

5. Расчёт месяцев между датами с учётом високосных лет

Если ваш интервал включает 29 февраля (например, расчёт стажа с 28.02.2020 по 01.03.2021), стандартные формулы могут дать сбой. В этом случае используйте комбинацию ДАТА и ЕСЛИ:

=ЕСЛИ(И(ДЕНЬ(A2)=29; МЕСЯЦ(A2)=2; НЕ(ГОД(B2)=ГОД(A2))); РАЗНДАТ(A2; ДАТА(ГОД(B2);3;1); "m"); РАЗНДАТ(A2; B2; "m"))

Логика:

  • 🔍 Проверяем, является ли начальная дата 29.02.
  • 📅 Если да — заменяем конечную дату на 01.03 текущего года (чтобы избежать ошибки с несуществующим 29.02 в невисокосный год).
  • 🔢 В остальных случаях используем стандартную РАЗНДАТ.
⚠️ Внимание: В Excel для Mac функция РАЗНДАТ может работать иначе, чем в Windows-версии. Тестируйте формулы на реальных данных перед использованием в важных расчётах!

Сравнение методов: какой выбрать?

Чтобы вам было проще ориентироваться, мы собрали все способы в одну таблицу с плюсами и минусами:

Метод Формула Учитывает дни Работает с 29.02 Когда использовать
Базовая РАЗНДАТ =РАЗНДАТ(A2; B2; "m") ❌ Нет ⚠️ Да (но может ошибаться) Простые расчёты целых месяцев
РАЗНДАТ + ЕСЛИ =ЕСЛИ(ДЕНЬ(B2)>=ДЕНЬ(A2); РАЗНДАТ(...); ...) ⚠️ Частично ⚠️ Да Стаж, кредиты (без дробных месяцев)
Арифметический метод = (ГОД(B2)-ГОД(A2))*12 + ... ❌ Нет ❌ Нет Быстрые прикидки без точности
Формула массива =РАЗНДАТ(...) + (ДЕНЬ(B2)-ДЕНЬ(A2))/... ✅ Да ⚠️ Да (с поправками) Точные расчёты (бухгалтерия, аналитика)
С учётом 29.02 =ЕСЛИ(И(ДЕНЬ(A2)=29; МЕСЯЦ(A2)=2; ... ❌ Нет ✅ Да Интервалы с високосными годами
📊 Какой метод вы используете чаще всего?
Функция РАЗНДАТ (DATEDIF)
Арифметический расчёт (годы*12 + месяцы)
Формулы с учётом дней
Другой способ

Частые ошибки и как их избежать

Даже опытные пользователи Excel допускают ошибки при работе с датами. Вот TOP-3 проблемы и их решения:

  1. Ошибка #ЧИСЛО! при использовании РАЗНДАТ.
    Причина: неверный формат ячеек (текст вместо даты) или конечная дата раньше начальной.
    Решение: проверьте формат ячеек (Формат → Ячейки → Дата) и порядок дат.
  2. Неправильный результат для 31-го числа.
    Пример: с 31.01.2023 по 28.02.2023 функция вернёт 0 месяцев, хотя прошло 28 дней.
    Решение: используйте формулу с учётом дней (раздел 4).
  3. Игнорирование високосных лет.
    Пример: расчёт стажа с 29.02.2020 по 28.02.2021 даст ошибку, так как 29.02.2021 не существует.
    Решение: применяйте специализированную формулу (раздел 5).

FAQ: Ответы на популярные вопросы

Как посчитать месяцы между датами в Google Таблицах?

В Google Sheets функция РАЗНДАТ работает аналогично Excel, но имеет другой синтаксис на английском:

=DATEDIF(A2; B2; "m")

Для учёта дней используйте ту же логику, что и в Excel (раздел 2). Обратите внимание: в Google Таблицах нет проблемы с 29.02 — функция автоматически корректирует даты.

Можно ли посчитать месяцы с учётом рабочих дней?

Да, но для этого понадобится комбинация функций РАЗНДАТ, ЧИСТРАБДНИ и ДЕНЬНЕД. Пример:

=РАЗНДАТ(A2; B2; "m") & " мес. и " & ЧИСТРАБДНИ(A2; B2) & " раб. дней"

Эта формула вернёт текст вида "2 мес. и 42 раб. дней".

Почему моя формула возвращает отрицательное число?

Это происходит, если конечная дата (B2) раньше начальной (A2). Чтобы избежать ошибки, добавьте проверку:

=ЕСЛИ(B2
Как округлять результат до целых месяцев?

Используйте функцию ОКРУГЛ:

=ОКРУГЛ(РАЗНДАТ(A2; B2; "m") + (ДЕНЬ(B2)-ДЕНЬ(A2))/30; 0)

Здесь мы:

  • Добавляем к месяцам долю дней (деленную на 30 для усреднения).
  • Округляем результат до целого числа.
Можно ли посчитать месяцы между сегодняшней датой и другой датой?

Да! Замените одну из дат на СЕГОДНЯ():

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

Эта формула будет автоматически обновляться при каждом открытии файла.