Как вычесть две даты в Excel: от дней до лет с формулами и без ошибок

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

На самом деле, в Excel есть несколько способов вычитания дат — от простейшей арифметической операции до специализированных функций вроде DATEDIF или РАЗНДАТ. Каждый метод подходит для своих целей: например, если вам нужна разница в полных годах с учётом календарных особенностей, обычное вычитание не сработает. А если даты записаны как текст? Тут уже потребуется предварительная обработка.

В этой статье мы разберём 5 проверенных способов вычитания дат — от базовых до продвинутых, с учётом нюансов форматирования и типичных ошибок. Вы узнаете, как получить разницу в днях, месяцах, годах, а также как избежать распространённых ловушек (например, когда Excel вдруг начинает считать даты как текст).

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

На первый взгляд, вычесть две даты в Excel проще простого: достаточно в ячейке написать =B2-A2, где A2 и B2 содержат даты. И действительно, в большинстве случаев это сработает — программа вернёт разницу в днях. Но что, если вам нужны месяцы или годы? Или если одна из дат записана как текст (например, после импорта из другой системы)?

Дело в том, что Excel хранит даты как последовательные числа, где 1 января 1900 года — это число 1, а каждая последующая дата увеличивает это значение на единицу. Когда вы вычитаете одну дату из другой, программа просто отнимает эти внутренние числа. Поэтому результат по умолчанию всегда в днях. Чтобы получить месяцы или годы, нужны специальные функции.

Ещё одна ловушка — формат ячеек. Если ячейка с результатом отформатирована как "Общий" или "Текст", вы увидите просто число (например, 456 вместо "12 месяцев"). А если даты введены как текст (например, "01.01.2023" с кавычками), Excel вообще не сможет их вычесть — получите ошибку #ЗНАЧ!.

⚠️ Внимание: Если после вычитания дат вы видите число вроде 44927 вместо ожидаемой разницы, проверьте формат ячейки с результатом. Скорее всего, он установлен как "Общий". Измените его на "Числовой" или "Дата", чтобы увидеть корректный вывод.

Способ 1: Простое вычитание для разницы в днях

Самый быстрый способ узнать, сколько дней прошло между двумя датами — вычесть их напрямую. Допустим, в ячейке A2 у вас дата начала проекта (15.05.2026), а в B2 — дата окончания (30.06.2026). Формула будет такой:

=B2-A2

Результат — 46 (дней). Но здесь есть несколько нюансов:

  • 📅 Формат ячейки с результатом должен быть "Общий" или "Числовой". Если установить "Дата", Excel попытается интерпретировать число как дату (например, 46 станет 16.02.1900).
  • ⚠️ Отрицательный результат означает, что вторая дата раньше первой. Чтобы избежать этого, используйте функцию ABS:
  • =ABS(B2-A2)
  • 🔄 Автоматическое обновление: если даты в ячейках A2 и B2 изменятся, результат пересчитается автоматически.

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

📊 Как часто вам нужно вычитать даты в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Способ 2: Функция DATEDIF (или РАЗНДАТ в русской версии)

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

=DATEDIF(начальная_дата; конечная_дата; единица_измерения)

Аргумент единица_измерения определяет, что вернёт функция:

Единица измерения Описание Пример результата
"D" Разница в днях 46 (дней между 15.05.2026 и 30.06.2026)
"M" Разница в полных месяцах 1 (месяц между 15.05.2026 и 15.06.2026)
"Y" Разница в полных годах 2 (года между 15.05.2022 и 15.05.2026)
"YM" Разница в месяцах без учёта лет 3 (месяца между 15.02.2026 и 15.05.2026)
"MD" Разница в днях без учёта месяцев и лет 10 (дней между 20.05.2026 и 30.05.2026)

Пример использования для расчёта возраста в годах:

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

Эта формула вернёт количество полных лет от даты рождения (12.03.1990) до сегодняшнего дня (TODAY()). Обратите внимание: DATEDIF учитывает календарные особенности. Например, разница между 31.01.2026 и 01.02.2026 в месяцах будет 1, даже если дней прошло всего 1.

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

Убедитесь, что обе даты введены как даты (не текст)

Проверьте порядок дат (начальная дата должна быть раньше конечной)

Выберите правильную единицу измерения ("D", "M", "Y" и т.д.)

Форматируйте ячейку с результатом как "Общий" или "Числовой"-->

Способ 3: Функции YEAR, MONTH, DAY для детализированного расчёта

Если вам нужна не просто разница в годах или месяцах, а подробный разбор (например, "2 года, 3 месяца и 15 дней"), придётся комбинировать несколько функций. Вот универсальная формула:

=DATEDIF(A2; B2; "Y") & " лет, " & DATEDIF(A2; B2; "YM") & " месяцев, " & DATEDIF(A2; B2; "MD") & " дней"

Но что, если вам нужны отдельные значения для дальнейших вычислений? Тогда лучше разделить расчёт на три ячейки:

  • 📅 Годы: =YEAR(B2)-YEAR(A2)-IF(OR(MONTH(B2)
  • 📆 Месяцы: =MONTH(B2)-MONTH(A2)+IF(DAY(B2)
  • 📌 Дни: =B2-DATE(YEAR(B2); MONTH(B2)-IF(DAY(B2)

Эти формулы учитывают переходы через границы месяцев и лет. Например, разница между 31.12.2023 и 01.01.2026 будет корректно отображена как 0 лет, 0 месяцев, 1 день, а не 0 лет, 1 месяц, -30 дней.

Критическая особенность: если вы используете такие формулы для расчёта стажа или возраста, обязательно проверяйте результат на граничных датах (например, 28.02 → 01.03 или 31.12 → 01.01). В этих случаях Excel может давать неочевидные ошибки.

Почему формулы для месяцев и дней такие сложные?

Дело в том, что простое вычитание месяцев (=MONTH(B2)-MONTH(A2)) не учитывает переход через год. Например, разница между 15.12.2023 и 10.01.2026 должна быть 0 месяцев (так как прошёл всего 1 месяц, но не полный), а не -11 месяцев. Поэтому в формуле добавлена проверка на день (IF(DAY(B2)), которая корректирует результат.

Способ 4: Вычитание даты из сегодняшнего дня (TODAY)

Часто требуется узнать, сколько времени прошло с определённой даты до сегодняшнего дня. Например, для расчёта возраста, срока хранения документа или времени с последнего обновления. Здесь пригодится функция TODAY(), которая всегда возвращает текущую дату.

Примеры:

  • 🗓️ Дни с даты рождения: =TODAY()-A2 (где A2 — дата рождения).
  • 📦 Срок годности продукта: =A2-TODAY() (где A2 — дата истечения). Если результат отрицательный, продукт просрочен.
  • 📈 Возраст в годах: =DATEDIF(A2; TODAY(); "Y").

Важный нюанс: функция TODAY() пересчитывается при каждом открытии файла. Это значит, что если вы сохраните документ сегодня, а откроете через неделю, результат изменится. Чтобы зафиксировать дату "сегодня" на момент сохранения, используйте комбинацию Ctrl + ; (это вставит статическую текущую дату).

⚠️ Внимание: Если вы делитесь файлом с коллегами, учитывайте, что у них функция TODAY() будет показывать их текущую дату, а не вашу. Для отчётности лучше использовать статические даты или указывать дату генерации отчёта в отдельной ячейке.

Способ 5: Обработка дат в текстовом формате

Одна из самых распространённых проблем — даты, записанные как текст (например, после импорта из CSV или базы данных). В этом случае простое вычитание не сработает: Excel вернёт ошибку #ЗНАЧ!. Чтобы исправить это, нужно сначала преобразовать текст в дату.

Способы конвертации:

  1. Ручной метод:
    1. Выделите столбец с датами.
    2. Перейдите в Данные → Текст по столбцам.
    3. Выберите "С разделителями" → "Далее" → "Далее".
    4. На шаге формата столбца выберите "Дата" и укажите формат (например, ДМГ или ГМД).
  2. Формула: Используйте функцию ДАТАЗНАЧ (в английской версии — DATEVALUE):
    =ДАТАЗНАЧ(A2)

    Где A2 — ячейка с текстовой датой (например, "15.05.2026").

  3. Power Query: Если данных много, импортируйте их через Данные → Получить данные → Из текстового/CSV-файла и настройте преобразование столбца в дату на этапе загрузки.

После конвертации можно применять любые методы вычитания из предыдущих разделов. Например:

=ДАТАЗНАЧ(B2)-ДАТАЗНАЧ(A2)

Если дата записана в нестандартном формате (например, "May 15, 2026"), ДАТАЗНАЧ может не сработать. В этом случае используйте комбинацию функций ДАТА, НАЙТИ и ПСТР для парсинга строки.

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

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

Ошибка Причина Решение
#ЗНАЧ! Одна или обе даты записаны как текст. Преобразуйте текст в дату с помощью ДАТАЗНАЧ или инструмента "Текст по столбцам".
Отрицательное число дней Конечная дата раньше начальной. Используйте ABS или поменяйте даты местами.
Некорректный результат в месяцах/годах Функция DATEDIF с параметром "M" или "Y" не учитывает дни. Для точного расчёта комбинируйте несколько параметров (например, "Y" + "YM").
Результат в виде даты (например, 46.01.1900) Ячейка с результатом отформатирована как "Дата". Измените формат на "Общий" или "Числовой".
Ошибка #ЧИСЛО! Даты выходят за пределы поддерживаемого диапазона (01.01.190031.12.9999). Проверьте корректность введённых дат.

Ещё одна распространённая проблема — разные форматы дат в одном столбце. Например, часть дат в формате ДД.ММ.ГГГГ, а часть — ММ/ДД/ГГГГ. В этом случае Excel может неправильно интерпретировать месяцы и дни. Чтобы избежать путаницы, используйте функцию ДАТА для явного указания порядка:

=ДАТА(ГОД; МЕСЯЦ; ДЕНЬ)

Например, если в ячейке A2 записано "05/06/2026", и вы не уверены, это 5 июня или 6 мая, разбейте строку на компоненты:

=ДАТА(ПРАВСИМВ(A2;4); ПСТР(A2;4;2); ЛЕВСИМВ(A2;2))

Продвинутые приёмы: условное форматирование и динамические диапазоны

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

Пример 1: Подсветка просроченных задач

  1. Выделите столбец с датами завершения.
  2. Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Меньше....
  3. В поле введите =TODAY() и выберите цвет (например, красный).

Пример 2: Динамический расчёт рабочих дней

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

=ЧИСТРАБДНИ(A2; B2)

Чтобы исключить ещё и праздники, добавьте их в отдельный диапазон (например, D2:D10) и используйте:

=ЧИСТРАБДНИ(A2; B2; D2:D10)

Пример 3: Автоматическое обновление статуса

Создайте формулу, которая будет возвращать текстовый статус в зависимости от разницы дат:

=ЕСЛИ(B2

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

Можно ли вычесть время из даты в Excel?

Да, Excel поддерживает вычитание времени. Например, формула =B2-A2 вернёт разницу в днях и часах, если в ячейках указаны дата и время (например, 15.05.2026 14:30). Чтобы получить результат только в часах, умножьте разницу на 24: =(B2-A2)*24.

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

Функция DATEDIF с параметром "M" считает полные месяцы, игнорируя дни. Например, разница между 31.01.2026 и 28.02.2026 будет 0 месяцев, так как 28.02 не является полным месяцем после 31.01. Для точного расчёта комбинируйте параметры "Y", "YM" и "MD".

Как вычесть даты в Google Таблицах?

В Google Таблицах используются те же принципы, что и в Excel:

  • Простое вычитание: =B2-A2.
  • Аналог DATEDIF: =DATEDIF(A2; B2; "D").
  • Текущая дата: =TODAY().

Основное отличие — в Google Таблицах нет функции ЧИСТРАБДНИ, но есть =NETWORKDAYS с аналогичным синтаксисом.

Можно ли вычесть даты в формате "год-месяц" (например, "май 2026")?

Да, но для этого нужно сначала преобразовать текст в дату. Например, если в ячейке A2 записано "май 2026", используйте:

=ДАТА(ПРАВСИМВ(A2;4); ПОИСКПОЗ(ЛЕВСИМВ(A2;3); {"янв";"фев";"мар";...;" дек"}); 1)

Здесь ПОИСКПОЗ преобразует название месяца в его номер, а ДАТА создаёт полноценную дату (первое число месяца). После этого можно вычитать как обычно.

Как посчитать количество кварталов между двумя датами?

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

= (ГОД(B2)-ГОД(A2))*4 + ОКРУГЛВНИЗ((МЕСЯЦ(B2)-1)/3;0) - ОКРУГЛВНИЗ((МЕСЯЦ(A2)-1)/3;0)

Эта формула сначала считает разницу в годах (умноженную на 4 квартала), а затем добавляет разницу в кварталах внутри года.