Как вычесть дату из даты в Excel: от простых формул до РАЗНДАТ

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

Многие ошибочно думают, что для вычитания дат нужны сложные формулы. На самом деле, Excel хранит даты как последовательные числа, где 1 соответствует 1 января 1900 года. Это значит, что простая операция =B2-A2 уже вернёт разницу в днях. Но что делать, если нужны годы, месяцы или часы? Или как избежать ошибки #ЗНАЧ!, когда ячейка содержит текст вместо даты? Ответы — ниже.

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

1. Базовый метод: простое вычитание дат

Самый очевидный способ — вычесть одну дату из другой напрямую. Если в ячейке A1 указана дата начала проекта (например, 15.05.2026), а в B1 — дата окончания (20.05.2026), то формула =B1-A1 вернёт разницу в днях. Но здесь есть подводные камни:

  • 📅 Формат ячеек: Если результат отображается как дата (например, 05.01.1900), а не число — измените формат ячейки на Общий или Числовой.
  • ⚠️ Ошибка #ЗНАЧ!: Появляется, если хотя бы одна из ячеек содержит текст. Проверьте формат данных с помощью функции ЕЧИСЛО.
  • Отрицательное значение: Если дата окончания раньше начальной, результат будет отрицательным. Используйте =АБС(B1-A1), чтобы получить модуль разницы.

Пример для расчёта количества дней между двумя событиями:

=ДАТА(2026;12;31)-ДАТА(2026;1;1)
Результат: 365 (високосный год не учитывается автоматически).
⚠️ Внимание: Excel по умолчанию использует систему дат 1900, где 29 февраля 1900 года считается корректной датой (хотя исторически это ошибка). Для точных астрономических расчётов используйте функцию ДАТАЗНАЧ.

2. Функция РАЗНДАТ: разница в годах, месяцах и днях

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

=РАЗНДАТ(нач_дата; кон_дата; единица)

Где единица — это код возвращаемого значения:

КодОписаниеПример результата
"y"Полные годы=РАЗНДАТ("1.01.2020"; "15.03.2026"; "y")4
"m"Полные месяцы=РАЗНДАТ("1.01.2026"; "15.03.2026"; "m")2
"d"Дни (игнорируя годы и месяцы)=РАЗНДАТ("1.03.2026"; "15.03.2026"; "d")14
"ym"Месяцы без учёта лет=РАЗНДАТ("1.01.2020"; "15.03.2020"; "ym")2
"yd"Дни без учёта лет=РАЗНДАТ("1.01.2020"; "15.01.2020"; "yd")14

Важно: функция РАЗНДАТ округляет результаты вниз. Например, разница между 31.12.2023 и 01.01.2026 составит 0 лет по коду "y", хотя фактически прошёл 1 день.

Чтобы получить разницу в виде "X лет, Y месяцев, Z дней", комбинируйте функции:

=РАЗНДАТ(A1;B1;"y") & " лет, " & РАЗНДАТ(A1;B1;"ym") & " мес., " & РАЗНДАТ(A1;B1;"md") & " дн."
📊 Какой формат разницы дат вам нужнее всего?
Количество дней
Годы, месяцы, дни
Только рабочие дни
Часы и минуты

3. Вычитание рабочих дней: функция ЧИСТРАБДНИ

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

=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])

Аргумент [праздники] — необязательный диапазон с датами нерабочих дней.

Пример: расчёт рабочих дней между 1 и 31 мая 2026 года, исключая 9 мая:

=ЧИСТРАБДНИ("1.05.2026"; "31.05.2026"; {"9.05.2026"})
Результат: 21 (в мае 2026 года 23 рабочих дня, но мы исключили 1 праздничный день).
  • 📊 Визуализация: Используйте Условное форматирование, чтобы выделить выходные дни красным в календаре.
  • 🔄 Обратный расчёт: Функция РАБДЕНЬ (WORKDAY) добавляет рабочие дни к дате. Например, =РАБДЕНЬ("1.05.2026"; 10) вернёт дату через 10 рабочих дней.
⚠️ Внимание: По умолчанию ЧИСТРАБДНИ считает субботу и воскресенье выходными. Для нестандартных графиков (например, 2/2) используйте ЧИСТРАБДНИ.МЕЖД (NETWORKDAYS.INTL).

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

4. Работа с временем: вычитание часов и минут

Если даты включают время (например, 15.05.2026 14:30), Excel вернёт разницу в днях с дробной частью, где 0,5 = 12 часов. Чтобы преобразовать результат в часы или минуты:

  • Часы: =(B1-A1)*24
  • ⏱️ Минуты: =(B1-A1)*1440 (24 часа × 60 минут)
  • ⏲️ Секунды: =(B1-A1)*86400

Пример: расчёт длительности звонка с 14:30:00 до 15:45:00:

=(ВРЕМЯ(15;45;0)-ВРЕМЯ(14;30;0))*24
Результат: 1,25 (1 час 15 минут).

Для отображения разницы в формате чч:мм:сс используйте пользовательский формат:

  1. Выделите ячейку с результатом.
  2. Нажмите Ctrl+1 (или ПКМ → Формат ячеек).
  3. Выберите категорию Время или создайте свой формат: [ч]:мм:сс.
Почему Excel показывает ###### вместо времени?

Это означает, что ширина столбца недостаточна для отображения значения. Расширьте столбец или измените формат на Общий, чтобы увидеть десятичное число (доли дня).

5. Обработка ошибок: что делать, если формула не работает

Типичные ошибки при вычитании дат и способы их исправления:

ОшибкаПричинаРешение
#ЗНАЧ!Ячейка содержит текстИспользуйте ЕЧИСЛО или ДАТАЗНАЧ для преобразования
#ЧИСЛО!Даты за пределами поддерживаемого диапазона (до 1900 или после 9999 года)Проверьте корректность введённых дат
#ДЕЛ/0!Деление на ноль в связанных формулахДобавьте проверку ЕСЛИОШИБКА
Некорректный результатФормат ячейки установлен как Дата, а не ОбщийИзмените формат на Числовой

Проверка корректности даты:

=ЕСЛИ(И(ЕЧИСЛО(A1); A1>=ДАТА(1900;1;1); A1<=ДАТА(9999;12;31)); "Дата корректна"; "Ошибка")

Если даты хранятся как текст (например, после импорта из CSV), преобразуйте их:

=ДАТАЗНАЧ(ПОДСТАВИТЬ(A1; "."; "/"))
Для формата ДД.ММ.ГГГГ.

6. Продвинутые приёмы: динамические диапазоны и Power Query

Для анализа больших наборов данных полезны следующие техники:

  • 📈 Динамические диаграммы: Создайте график Ганта, где длина полосок соответствует разнице дат. Используйте СЧЁТЕСЛИ для подсчёта задач по срокам.
  • 🔄 Power Query: Импортируйте данные с датами и автоматически рассчитывайте разницу при обновлении. Добавьте столбец с формулой = Date.From([Дата2]) - Date.From([Дата1]).
  • 📊 Сводные таблицы: Группируйте данные по месяцам или кварталам, чтобы анализировать временные тренды.

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

=СЧЁТЕСЛИМ(диапазон_дат_завершения; ">="&диапазон_плановых_дат)

Для визуализации временных интервалов настройте гистограмму с накоплением:

  1. Создайте таблицу с датами начала и окончания.
  2. Добавьте столбец с разницей в днях.
  3. Постройте гистограмму, где по оси X — задачи, по оси Y — дни.
⚠️ Внимание: При работе с Power Query убедитесь, что столбцы с датами имеют тип Date, а не Text. В противном случае операции вычитания будут недоступны.

FAQ: Частые вопросы о вычитании дат в Excel

Как вычесть текущую дату из фиксированной?

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

=A1-СЕГОДНЯ()

Для автоматического обновления нажмите F9. Чтобы зафиксировать текущую дату (без обновлений), используйте Ctrl+; (горячие клавиши для вставки статической даты).

Почему разница в днях между 1.03.2026 и 1.04.2026 равна 31, а не 30?

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

=B1-A1-1
Как вычесть даты в Google Sheets?

Формулы идентичны Excel, но в Google Sheets функция РАЗНДАТ официально документирована. Для рабочих дней используйте =NETWORKDAYS, а для времени — те же умножения на 24/1440.

Можно ли вычесть даты в формате "май 2026" (без дня)?

Да, но сначала преобразуйте текст в дату с помощью ДАТАЗНАЧ + ПОДСТАВИТЬ:

=ДАТАЗНАЧ("1." & ПОДСТАВИТЬ(A1; " "; "."))

Где A1 содержит "май 2026". Затем вычитайте как обычно.

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

Используйте функцию ЦЕЛОЕ:

=ЦЕЛОЕ((B1-A1)/7)

Для неполных недель добавьте проверку остатка:

=ЕСЛИ(ОСТАТ((B1-A1);7)>0; ЦЕЛОЕ((B1-A1)/7)+1; ЦЕЛОЕ((B1-A1)/7))