Как отнять одну дату от другой в Excel: формулы, примеры и лайфхаки

Почему вычитание дат в Excel работает не так, как вы думаете

Вы когда-нибудь пытались вручную посчитать, сколько дней прошло между двумя датами, и запутывались в календаре? Excel делает это за доли секунды — но только если знаешь правильные формулы. Многие пользователи ошибочно думают, что программа просто "умеет" работать с датами как с обычными числами. На самом деле за кулисами скрывается целая система преобразований, где каждая дата — это число дней с 1 января 1900 года.

Представьте: ваш начальник просит рассчитать срок выполнения проекта, а вы тратите часы на подсчет дней между 15 марта и 30 апреля. Или хуже — забываете учесть выходные, и итоговая цифра оказывается неверной. В этой статье мы разберем не только базовое вычитание (=B2-A2), но и расчет рабочих дней, разницу в месяцах/годах, а также обработку ошибок типа #ЗНАЧ!, которые возникают при работе с пустыми ячейками. Вы узнаете, как Excel "видит" даты и почему иногда показывает странные результаты.

Базовый метод: простая разница в днях

Начнем с самого очевидного — вычитания одной даты из другой для получения количества дней. Этот метод работает в 90% случаев, когда нужно узнать продолжительность события или интервал между двумя точками во времени. Формула предельно проста:

=Конечная_дата - Начальная_дата

Например, если в ячейке A1 у вас дата начала проекта 01.06.2026, а в B1 — дата окончания 15.07.2026, формула =B1-A1 вернет значение 44. Это количество дней между датами, включая оба указанных дня (если требуется исключить один из дней, используйте =B1-A1-1).

  • 📅 Формат ячеек имеет значение! Если Excel показывает вместо числа странный код (например, 45467), проверьте формат ячейки с результатом — он должен быть Общий или Числовой, а не Дата.
  • Отрицательный результат означает, что начальная дата позже конечной. Это нормально, если вы специально проверяете "опоздания" (например, сроки поставок).
  • 🔄 Копирование формулы: используйте маркер автозаполнения (маленький квадрат в правом нижнем углу ячейки), чтобы быстро применить формулу ко всему столбцу.

Расчет рабочих дней: игнорируем выходные и праздники

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

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

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

=ЧИСТРАБДНИ(A2; B2; $D$1:$D$10)

Если праздничные дни не указаны, формула просто проигнорирует субботы и воскресенья. Например, разница между 1 июня и 10 июня 2026 года составляет 9 календарных дней, но только 7 рабочих (если 8 и 9 июня — выходные).

Как быстро создать список праздников?

1. Скачайте официальный производственный календарь с сайта правительства вашей страны (обычно в формате Excel).

2. Скопируйте столбец с датами праздничных дней.

3. Вставьте их в отдельный лист вашего файла и назовите его "Праздники".

4. В основной формуле ссылайтесь на этот диапазон: =ЧИСТРАБДНИ(A2; B2; Праздники!$A$1:$A$15).

Функция Синтаксис Пример Результат
ЧИСТРАБДНИ =ЧИСТРАБДНИ(нач; кон; [праздники]) =ЧИСТРАБДНИ("1.06.24"; "10.06.24") 7
РАБДЕНЬ =РАБДЕНЬ(нач_дата; дни; [праздники]) =РАБДЕНЬ("1.06.24"; 5) 07.06.2026
ДЕНЬНЕД =ДЕНЬНЕД(дата; [тип_возврата]) =ДЕНЬНЕД("8.06.24"; 2) 7 (суббота)
📊 Какой тип расчета дат вам нужен чаще всего?
Разница в календарных днях
Разница в рабочих днях
Добавление дней к дате
Определение дня недели
Другой вариант

Разница в месяцах и годах: функции РАЗНДАТ и альтернативы

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

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

Аргумент единица_измерения определяет, что именно вы хотите получить:

  • 📅 "y" — полные годы
  • 📆 "m" — полные месяцы
  • 📇 "d" — дни (с учетом месяцев и лет)
  • 📈 "ym" — месяцы без учета лет
  • 📉 "yd" — дни без учета лет
  • 📊 "md" — дни без учета месяцев и лет

Пример: формула =РАЗНДАТ("15.03.2020"; "20.07.2026"; "y") вернет 4 (полных года), а =РАЗНДАТ("15.03.2020"; "20.07.2026"; "m")52 (полных месяцев). Обратите внимание: функция РАЗНДАТ не работает в Excel Online и требует ручного ввода, так как не отображается в списке функций.

Убедитесь, что даты введены корректно (не как текст)|Проверьте порядок дат (нач_дата должна быть раньше кон_дата)|Используйте формат ячеек "Дата" для аргументов|Учтите, что функция округляет вниз (например, 1 год и 11 месяцев = 1 год)

-->

Ошибки и их решения: почему Excel показывает #ЗНАЧ! или ######

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

⚠️ Внимание: Ошибка #ЗНАЧ! часто возникает, когда одна из ячеек содержит текст, который Excel воспринимает как дату (например, "01.01.2026г." вместо "01.01.2026"). Используйте функцию ДАТАЗНАЧ(), чтобы преобразовать текст в дату: =ДАТАЗНАЧ("01.01.2026г.").
  • 🔢 ###### — столбец слишком узкий для отображения результата. Растяните его или измените формат ячейки на Общий.
  • 📅 #ЧИСЛО! — разница между датами превышает допустимый диапазон (Excel поддерживает даты с 01.01.1900 по 31.12.9999).
  • #ИМЯ? — опечатка в названии функции (например, ЧИСТРАБДНЕЙ вместо ЧИСТРАБДНИ).
  • ⚠️ #ДЕЛ/0! — попытка разделить на ноль (например, при расчете среднего количества дней между датами, где одна из ячеек пуста).

Для диагностики ошибок используйте вспомогательные столбцы. Например, добавьте столбец с формулой =ЕТЕКСТ(A1), чтобы проверить, содержит ли ячейка текст вместо даты. Или используйте =ТИП(A1) — если результат 2, то в ячейке текст; если 1 — число (включая даты).

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

Вычитание дат становится действительно мощным инструментом, когда сочетается с другими функциями Excel. Рассмотрим два продвинутых сценария:

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

Допустим, у вас список дедлайнов в столбце B, а сегодняшняя дата — в A1 (формула =СЕГОДНЯ()). Чтобы автоматически выделять просроченные задачи:

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

2. Динамический расчет срока доставки

Если срок доставки зависит от региона (например, 3 дня для Москвы и 7 дней для регионов), используйте комбинацию ВПР и вычитания дат:

=А2 + ВПР(C2; Таблица_доставки; 2; ЛОЖЬ)

Где:

  • A2 — дата заказа
  • C2 — регион доставки
  • Таблица_доставки — диапазон с соответствиями "Регион → Срок доставки"

Автоматизация: макросы для массовой обработки дат

Если вам регулярно приходится работать с сотнями дат, ручной ввод формул становится утомительным. В этом случае поможет VBA (Visual Basic for Applications). Например, следующий макрос автоматически добавит столбец с разницей в днях между двумя датами:

Sub AddDateDifference()

Dim ws As Worksheet

Dim lastRow As Long

Set ws = ActiveSheet

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row

ws.Range("C1").Value = "Разница (дней)"

ws.Range("C2:C" & lastRow).Formula = "=RC[-1]-RC[-2]"

ws.Range("C2:C" & lastRow).NumberFormat = "0"

End Sub

Чтобы использовать этот макрос:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. Вставьте код в новый модуль (Вставка → Модуль).
  3. Закройте редактор и запустите макрос через Вид → Макросы.
⚠️ Внимание: Перед запуском макросов сохраните файл в формате .xlsm (с поддержкой макросов) и убедитесь, что в настройках безопасности разрешено их выполнение (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Параметры макросов).

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

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

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

= (B1 - A1) * 24

Для минут используйте = (B1 - A1) * 1440 (24 часа × 60 минут).

Почему при вычитании дат получается отрицательное число, хотя конечная дата позже?

Это происходит, если Excel воспринимает ваши "даты" как текст. Проверьте формат ячеек (Формат → Формат ячеек → Числовой) или используйте ДАТАЗНАЧ() для преобразования. Также убедитесь, что в настройках региональных стандартов Windows используется правильный формат даты (например, ДД.ММ.ГГГГ, а не ММ/ДД/ГГГГ).

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

Используйте функцию ОТБР (округление вниз) или ЦЕЛОЕ:

= ОТБР((B1 - A1) / 7; 0)

Эта формула делит количество дней на 7 и округляет результат до целого числа.

Можно ли вычесть даты в Google Таблицах?

Да, все описанные методы работают и в Google Таблицах, за исключением функции РАЗНДАТ (там она называется DATEDIF, но синтаксис идентичен). Также в Google Таблицах есть функция =NETWORKDAYS (аналог ЧИСТРАБДНИ), которая поддерживает динамические диапазоны праздников.

Как учитывать только будние дни, но исключать конкретные даты (например, корпоративные праздники)?

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

=ЧИСТРАБДНИ(A2; B2; Исключения!$A$1:$A$20)

Где Исключения! — название листа с датами.