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

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

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

Вы узнаете:

  • 🔹 Почему РАЗНДАТ("м") иногда"врёт" и как это исправить
  • 🔹 Как посчитать полные и неполные месяцы отдельно
  • 🔹 Формулы для расчёта с округлением вверх/вниз/до ближайшего целого
  • 🔹 Примеры для Excel 365, Excel 2019 и Google Таблиц
📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

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

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

  1. Скрытая функция: в новых версиях Excel её нет в списке мастер-функций (fx), но она работает. В Google Таблицах доступна без ограничений.
  2. Неинтуитивное округление: по умолчанию функция считает полные месяцы, игнорируя дни. Например, разница между 15.01.2023 и 10.02.2023 будет 0 месяцев, хотя фактически прошёл 1 месяц.

Базовый синтаксис:

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

Где:

  • 📅 нач_дата — начальная дата (например, "01.01.2023")
  • 📅 кон_дата — конечная дата (например, "31.12.2023")
  • 🔤 "м" — код для расчёта в месяцах (альтернативы: "y" для лет, "d" для дней)

Пример: Рассчитаем разницу между 15 мая 2023 и 20 июля 2023:

=РАЗНДАТ("15.05.2023";"20.07.2023";"м")

Результат: 2 (полных месяца). Но фактически прошло 2 месяца и 5 дней!

⚠️ Внимание: Если конечная дата раньше начальной, функция вернёт ошибку #ЧИСЛО!. Используйте ЕСЛИОШИБКА для обработки:
=ЕСЛИОШИБКА(РАЗНДАТ(A1; B1;"м");"Дата окончания раньше начальной")

2. Как посчитать месяцы с учётом дней: 3 альтернативных метода

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

2.1. Формула с округлением вверх (МОТ — метод"отрезков")

Используем комбинацию функций ГОД, МЕСЯЦ и ДЕНЬ:

=ОКРУВВЕРХ(ГОД(B1)-ГОД(A1)*12+МЕСЯЦ(B1)-МЕСЯЦ(A1)+(ДЕНЬ(B1)>=ДЕНЬ(A1)); 0)

Логика: Сначала считаем разницу в годах и месяцах, затем добавляем 1 месяц, если день окончания ≥ дня начала.

Пример: Для дат 15.05.2023 и 20.07.2023 формула вернёт 3 (округление вверх).

2.2. Формула с дробными месяцами (точный расчёт)

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

=РАЗНДАТ(A1; B1;"м") + (ДЕНЬ(B1)-ДЕНЬ(A1))/ДЕНЬ(ДАТА(ГОД(A1); МЕСЯЦ(A1)+1; 0))

Где ДАТА(ГОД(A1); МЕСЯЦ(A1)+1; 0) возвращает последний день месяца начальной даты.

2.3. Метод с использованием функции ДОЛЯГОДА

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

=ДОЛЯГОДА(A1; B1; 1)*12

Аргумент 1 указывает метод расчёта (европейский стандарт). Результат будет в месяцах с дробной частью.

Убедитесь, что даты в ячейках имеют формат"Дата"|Проверьте порядок дат (нач_дата ≤ кон_дата)|Учтите нужный тип округления (вверх/вниз/точный)|Протестируйте формулу на крайних случаях (например, 31.01 → 28.02)-->

3. Расчёт количества полных и неполных месяцев отдельно

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

Тип расчёта Формула Пример (15.05.2023 — 20.07.2023)
Полные месяцы =РАЗНДАТ(A1; B1;"м") 2
Остаток дней =ЕСЛИ(ДЕНЬ(B1)>=ДЕНЬ(A1); ДЕНЬ(B1)-ДЕНЬ(A1); ДЕНЬ(ДАТА(ГОД(B1);МЕСЯЦ(B1)+1;0))-ДЕНЬ(A1)+ДЕНЬ(B1)) 5
Всего месяцев (с дробью) =РАЗНДАТ(A1; B1;"м") + (ДЕНЬ(B1)-ДЕНЬ(A1))/30 2.17

Пояснение к формуле остатка дней: Она учитывает случаи, когда день окончания меньше дня начала (например, 31.01 → 28.02). В таких ситуациях"заимствуем" дни из следующего месяца.

Почему 30 дней в формуле дробных месяцев?

В финансовых расчётах часто используется приближение"1 месяц = 30 дней" для упрощения. Для точного календарного расчёта замените 30 на ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0)) (последний день месяца).

4. Продвинутые сценарии: учёт рабочих дней, кварталов, финансовых периодов

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

4.1. Расчёт в рабочих месяцах (исключая выходные)

Если нужно посчитать месяцы, учитывая только рабочие дни (пн-пт), используйте комбинацию РАЗНДАТ и ЧИСТРАБДНИ:

=РАЗНДАТ(A1; B1;"м") - (ЧИСТРАБДНИ(A1; B1; [праздники]) / 21)

Где 21 — среднее количество рабочих дней в месяце. Для точности замените на фактическое значение для вашего региона.

4.2. Расчёт по кварталам

Чтобы посчитать количество кварталов между датами:

=ОКРУВВЕРХ(РАЗНДАТ(A1; B1;"м")/3; 0)

Или с учётом точного начала квартала (например, 1 января, 1 апреля и т.д.):

=ЦЕЛОЕ((ГОД(B1)-ГОД(A1))*4 + ОСТАТ(МЕСЯЦ(B1)-1; 3) - ОСТАТ(МЕСЯЦ(A1)-1; 3))/3)

4.3. Финансовые периоды (например, 4-4-5 недель)

Для нестандартных периодов (например, 4-4-5, где год делится на 13 периодов по 28 дней) используйте:

=ОКРУВВЕРХ(РАЗНДАТ(A1; B1;"д")/28; 0)
⚠️ Внимание: При расчёте финансовых периодов всегда уточняйте правила округления в вашей компании. Например, в банковской сфере часто используют метод Act/Act (фактическое количество дней в месяце).

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

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

  1. Формат ячеек ≠"Дата": Если ячейка отформатирована как текст, Excel воспринимает дату как строку. Проверяйте формат через Формат ячеек → Дата.
  2. Игнорирование високосных лет: Функции вроде ДОЛЯГОДА могут давать погрешность в феврале. Используйте ДАТАРАЗН для точных расчётов.
  3. Путаница с порядком дат: РАЗНДАТ("31.12.2023";"01.01.2023";"м") вернёт ошибку, хотя математически разница существует. Всегда проверяйте, что кон_дата ≥ нач_дата.

Как проверить формулу? Тестируйте её на крайних случаях:

  • 🔸 Одинаковые даты (разница = 0)
  • 🔸 Даты в разных месяцах, но с одинаковым днём (например, 15.01 и 15.02)
  • 🔸 Переход через год (например, 31.12.2023 и 01.01.2026)
  • 🔸 Високосный год (29.02.2026)

6. Примеры для Google Таблиц: отличия от Excel

В Google Таблицах функции для работы с датами аналогичны Excel, но есть нюансы:

Задача Excel Google Таблицы
Базовый расчёт месяцев =РАЗНДАТ(A1; B1;"м") =DATEDIF(A1; B1;"m") (английский синтаксис)
Последний день месяца =ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0) =EOMONTH(A1; 0) (проще!)
Рабочие дни =ЧИСТРАБДНИ(A1; B1) =NETWORKDAYS(A1; B1)

Ключевое отличие: В Google Таблицах функция DATEDIF доступна в мастер-функций (fx), тогда как в Excel её нужно вводить вручную.

Пример для Google Таблиц: Рассчитаем разницу между датами с округлением до ближайшего целого месяца:

=ROUND(DATEDIF(A1; B1;"m") + (DAY(B1)-DAY(A1))/DAY(EOMONTH(A1; 0)); 0)

7. Автоматизация: как создать калькулятор месяцев в Excel

Если вам регулярно нужно считать месяцы между датами, имеет смысл создать шаблонный калькулятор. Вот пошаговая инструкция:

  1. Создайте таблицу ввода:
    • 📌 Ячейка A1 —"Дата начала" (формат"Дата")
    • 📌 Ячейка B1 —"Дата окончания" (формат"Дата")
    • 📌 Ячейка C1 —"Тип расчёта" (выпадающий список с вариантами:"Полные месяцы","С округлением вверх","Точный (с дробью)")
  • Добавьте выпадающий список:

    Выделите C1Данные → Проверка данных → Тип:"Список" → Источник: "Полные месяцы","С округлением вверх","Точный (с дробью)".

  • Напишите универсальную формулу:

    В ячейке D1 (результат) используйте:

    =ЕСЛИ(C1="Полные месяцы"; РАЗНДАТ(A1; B1;"м");
    

    ЕСЛИ(C1="С округлением вверх"; ОКРУВВЕРХ(РАЗНДАТ(A1; B1;"м") + (ДЕНЬ(B1)>=ДЕНЬ(A1)); 0);

    РАЗНДАТ(A1; B1;"м") + (ДЕНЬ(B1)-ДЕНЬ(A1))/ДЕНЬ(ДАТА(ГОД(A1);МЕСЯЦ(A1)+1;0))))

  • Добавьте условное форматирование:

    Выделите D1Главная → Условное форматирование → Создать правило →"Форматировать только ячейки, которые содержат" →"Значение меньше 0" → Установите красный цвет текста.

  • Результат: Пользователь выбирает тип расчёта в выпадающем списке, а формула автоматически пересчитывает результат. Такой шаблон можно сохранить как файл .xltx и использовать повторно.

    FAQ: Частые вопросы о расчёте месяцев в Excel

    ❓ Почему РАЗНДАТ иногда возвращает отрицательное число?

    Это происходит, если конечная дата раньше начальной. Функция РАЗНДАТ не поддерживает отрицательные интервалы. Используйте:

    =АБС(РАЗНДАТ(A1; B1;"м"))

    или проверяйте порядок дат через ЕСЛИ.

    ❓ Как посчитать месяцы между датами, если в одной из ячеек пусто?

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

    =ЕСЛИ(ИЛИ(A1=""; B1="");"Заполните даты"; РАЗНДАТ(A1; B1;"м"))

    Или комбинацию с ЕПУСТО:

    =ЕСЛИ(ИЛИ(ЕПУСТО(A1); ЕПУСТО(B1));""; РАЗНДАТ(A1; B1;"м"))
    ❓ Можно ли посчитать месяцы с учётом только рабочих дней?

    Да, но для этого нужно:

    1. Посчитать общее количество рабочих дней между датами (ЧИСТРАБДНИ).
    2. Разделить результат на среднее количество рабочих дней в месяце (например, 21).
    3. Округлить до нужного значения:
    =ОКРУГЛ(ЧИСТРАБДНИ(A1; B1)/21; 2)

    Для точности замените 21 на фактическое среднее для вашего региона.

    ❓ Как посчитать месяцы между датами в Power Query?

    В Power Query (вкладка"Данные → Получить данные") используйте:

    1. Загрузите таблицу с датами.
    2. Добавьте пользовательский столбец с формулой:
    =Duration.Days([Дата окончания] - [Дата начала]) / 30.44

    Где 30.44 — среднее количество дней в месяце (365/12).

    ❓ Почему в Google Таблицах DATEDIF работает, а в Excel — нет?

    Вероятно, вы используете неанглийскую версию Excel. В руссифицированных версиях функция называется РАЗНДАТ. Также проверьте:

    • 🔹 Правильность синтаксиса: =РАЗНДАТ(нач_дата; кон_дата;"м").
    • 🔹 Формат ячеек с датами (должен быть"Дата", а не"Текст").
    • 🔹 Отсутствие пробелов или непечатаемых символов в ячейках.

    Если проблема сохраняется, используйте альтернативу:

    =ОКРУГЛВНИЗ((ГОД(B1)-ГОД(A1))*12+МЕСЯЦ(B1)-МЕСЯЦ(A1); 0)