Введение: зачем вычитать даты в Excel?
Разница между датами — одна из самых востребованных операций в Microsoft Excel и Google Таблицах. От расчета срока выполнения проекта до определения стажа работы или времени доставки заказа — умение правильно вычитать даты экономит часы ручной работы. Но что если нужно учесть только рабочие дни? Или получить результат не в днях, а в месяцах? А что делать, если Excel вдруг показывает вместо числа странный код ######?
В этой статье вы найдете 5 проверенных способов вычитания дат — от базовых формул до продвинутых функций с учетом праздников и выходных. Мы разберем типичные ошибки (например, почему =ДАТАЗНАЧ("31.01.2026")-ДАТАЗНАЧ("01.01.2026") дает 30, а не 31 день), покажем, как преобразовать результат в годы или часы, и дадим готовые шаблоны для копирования. Особое внимание уделим функции РАЗНДАТ — она скрыта в Excel, но решает 80% задач по работе с датами.
Способ 1: Простое вычитание дат (разница в днях)
Самый очевидный метод — вычесть одну дату из другой напрямую. Excel хранит даты как последовательные числа (начиная с 1 для 01.01.1900), поэтому операция вычитания работает интуитивно:
=B2-A2
Где A2 — ячейка с более ранней датой, а B2 — с более поздней. Результат будет в днях. Например:
- 📅
=ДАТАЗНАЧ("15.05.2026")-ДАТАЗНАЧ("10.05.2026")→ вернет5(дней) - 📅
=ДАТАЗНАЧ("01.03.2026")-ДАТАЗНАЧ("01.02.2026")→ вернет28(в 2026 году февраль невисокосный)
Важно: если ячейки отформатированы как текст (например, после импорта из CSV), Excel может не распознать их как даты. Чтобы исправить это, используйте функцию ДАТАЗНАЧ или преобразуйте формат ячейки в Дата через меню Главная → Формат → Формат ячеек.
| Формула | Пример | Результат | Пояснение |
|---|---|---|---|
=B1-A1 |
10.06.2026 - 05.06.2026 |
5 |
Разница в днях между двумя датами |
=ДАТАЗНАЧ("31.12.2026")-СЕГОДНЯ() |
31.12.2026 - 15.07.2026 |
534 (на 15.07.2026) |
Дней до Нового 2026 года (динамический расчет) |
=A1-TEXT(B1,"dd.mm.yyyy") |
15.07.2026 - "10.07.2026" |
#ЗНАЧ! |
Ошибка: текст не преобразован в дату |
⚠️ Внимание: Если вы вычитаете текущую дату (функцияСЕГОДНЯ()) из будущей, результат будет меняться каждый день при пересчете таблицы. Чтобы зафиксировать значение, скопируйте ячейку и вставьте какЗначения(Ctrl+Shift+V).
Способ 2: Функция РАЗНДАТ — скрытый инструмент для гибких расчетов
Функция РАЗНДАТ (DATEDIF в английской версии) не отображается в списке функций Excel, но работает во всех версиях программы. Она позволяет вычислять разницу не только в днях, но и в месяцах или годах. Синтаксис:
=РАЗНДАТ(нач_дата; кон_дата; единица)
Где единица — это код возвращаемого значения:
- 📅
"d"— разница в днях - 📆
"m"— разница в полных месяцах - 🎂
"y"— разница в полных годах - 📅📆
"yd"— дни без учета годов (например, разница между 15.05.2026 и 10.06.2026 вернет 26 дней) - 📆🎂
"ym"— месяцы без учета годов - 🎂📅
"md"— дни без учета месяцев и годов
Примеры использования:
=РАЗНДАТ("01.01.2000"; "01.01.2026"; "y") → 25 (полных лет)
=РАЗНДАТ(A2; B2; "m") → 18 (полных месяцев между датами)
=РАЗНДАТ("15.05.2026"; СЕГОДНЯ(); "d") → 61 (дней с 15 мая, если сегодня 15.07.2026)
Почему РАЗНДАТ не видна в списке функций?
Функция РАЗНДАТ была добавлена в Excel для совместимости с Lotus 1-2-3 и никогда не документировалась официально. Несмотря на это, она работает во всех версиях, включая Excel 365 и Excel Online.
⚠️ Внимание: ФункцияРАЗНДАТокругляет результаты вниз. Например, разница между 31.12.2026 и 01.01.2026 в годах ("y") будет0, хотя прошел 1 день. Для точных расчетов комбинируйте несколько единиц, например:=РАЗНДАТ(A2;B2;"y") & " лет, " & РАЗНДАТ(A2;B2;"ym") & " мес.".
Способ 3: Расчет рабочих дней (без выходных и праздников)
Если нужно посчитать только рабочие дни (исключая субботу, воскресенье и праздники), используйте функцию ЧИСТРАБДНИ:
=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])
Аргумент [праздники] необязателен — это диапазон ячеек с датами праздничных дней. Примеры:
- 🏢
=ЧИСТРАБДНИ("01.06.2026"; "10.06.2026")→ вернет8(без выходных) - 🎉
=ЧИСТРАБДНИ(A2; B2; D2:D5)→ учитывает праздники из ячеекD2:D5
Для России в 2026 году праздничными днями будут (можно скопировать в Excel):
01.01.2026; 02.01.2026; 07.01.2026; 23.02.2026; 08.03.2026; 01.05.2026; 09.05.2026; 12.06.2026; 04.11.2026
Убедитесь, что даты в ячейках имеют формат "Дата"|Проверьте список праздников на актуальность|Используйте абсолютные ссылки для диапазона праздников (например, $D$2:$D$10)|При переносе выходных добавьте их в список праздников-->
Альтернатива: функция ЧИСТРАБДНИ.МЕЖД (в Excel 2013+) позволяет указать собственные выходные дни. Например, для расчета с выходными в пятницу и субботу:
=ЧИСТРАБДНИ.МЕЖД(A2; B2; 1; D2:D5)
Где 1 — код выходных (1 = суббота-воскресенье, 2 = воскресенье-понедельник, 11 = пятница-суббота и т.д.).
Способ 4: Разница в месяцах и годах с учетом неполных периодов
Часто требуется посчитать не только полные месяцы/годы, но и остаток. Например, стаж работы "2 года 3 месяца 15 дней". Для этого комбинируем несколько функций:
=РАЗНДАЧ(A2;B2;"y") & " лет, " & РАЗНДАТ(A2;B2;"ym") & " мес., " & РАЗНДАТ(A2;B2;"md") & " дн."
Но этот метод имеет ограничение: он не учитывает, что месяцы могут иметь разное количество дней. Для точного расчета используйте формулу:
=ЦЕЛОЕ((ГОД(B2)-ГОД(A2))*12+МЕСЯЦ(B2)-МЕСЯЦ(A2)) & " мес. " & B2-ДАТА(ГОД(B2);МЕСЯЦ(B2)-ЦЕЛОЕ((ГОД(B2)-ГОД(A2))*12+МЕСЯЦ(B2)-МЕСЯЦ(A2));ДЕНЬ(A2)) & " дн."
Пример результата для дат 15.02.2023 и 10.07.2026:
- 📅
2 г. 4 мес. 25 дн.(точный расчет) - 📅
28 мес. 25 дн.(альтернативный формат)
Полные годы/месяца/дни (например, 2 г. 3 м. 5 дн.)|Только рабочие дни|Разница в часах или минутах|Дробные значения (например, 1.5 года)|Другой вариант-->
⚠️ Внимание: При расчете разницы в месяцах между31.01.2026и28.02.2026Excel может вернуть некорректный результат из-за разного количества дней в месяцах. Чтобы избежать ошибки, используйте функциюДАТАМЕСдля приведения дат к одинаковому дню месяца:=ДАТАМЕС(A2; РАЗНДАТ(A2;B2;"m"))
Способ 5: Разница в часах, минутах и секундах
Если даты включают время (например, 15.07.2026 14:30), вы можете вычислить разницу в часах, минутах или секундах. Для этого:
- Убедитесь, что ячейки имеют формат
Дата и время(в менюФормат ячеек). - Вычтите одну дату из другой:
=B2-A2. - Умножьте результат на нужный коэффициент:
- ⏰
*24— для часов - ⏱️
*24*60— для минут - ⏲️
*24*60*60— для секунд
- ⏰
Примеры:
= (B2-A2)*24 → разница в часах
= ЦЕЛОЕ((B2-A2)*24) → полные часы (без дробной части)
= ТЕКСТ((B2-A2)*24; "0.00") & " ч." → форматированный вывод
| Формула | Пример данных | Результат |
|---|---|---|
= (B1-A1)*24 |
15.07.2026 18:00 - 15.07.2026 09:30 |
8.5 (часов) |
= ТЕКСТ((B1-A1)*1440; "0") & " мин." |
15.07.2026 10:15 - 15.07.2026 10:00 |
15 мин. |
= ОТБР((B1-A1)*86400) |
15.07.2026 10:00:30 - 15.07.2026 10:00:00 |
30 (секунд) |
Типичные ошибки и как их избежать
Даже опытные пользователи Excel сталкиваются с ошибками при работе с датами. Вот самые распространенные:
- Текст вместо даты: Если дата импортирована как текст (например, из CSV), Excel не сможет ее распознать. Исправляйте функцией
ДАТАЗНАЧили инструментом "Текст по столбцам" (Данные → Текст по столбцам). - Неправильный порядок дат: Вычитание более поздней даты из ранней даст отрицательное число. Используйте
=АБС(B2-A2), чтобы всегда получать положительный результат. - Округление в
РАЗНДАТ: Функция всегда округляет вниз. Для точных расчетов комбинируйте несколько единиц (например,"y"+"ym"). - Праздники в
ЧИСТРАБДНИ: Если забыть указать праздничные дни, они будут посчитаны как рабочие. Всегда проверяйте актуальность списка праздников. - Формат ячейки: Результат вычитания дат может отображаться как дата (например,
05.01.1900), если ячейка имеет формат "Дата". Измените формат на "Общий" или "Числовой". - 📊 Расчет срока выполнения с учетом дедлайна:
=ЕСЛИ(ЧИСТРАБДНИ(СЕГОДНЯ(); B2)<=5; "Срочно!"; "В срок")Проверяет, осталось ли до дедлайна (
B2) меньше 5 рабочих дней. - 📅 Автоматическое обновление статуса:
=ЕСЛИ(B2<СЕГОДНЯ(); "Просрочено"; ЕСЛИ(B2=СЕГОДНЯ(); "Сегодня"; "В процессе")) - ⏳ Прогноз даты завершения:
=РАБДЕНЬ(СЕГОДНЯ(); A2; D2:D5)где
A2— количество рабочих дней, аD2:D5— праздники.
Скрытая ловушка: Функция СЕГОДНЯ() обновляется при каждом пересчете таблицы. Если вам нужно зафиксировать текущую дату (например, для отчета), используйте сочетание клавиш Ctrl+; (вставляет статическую дату) или скопируйте значение СЕГОДНЯ() как "Значения".
Продвинутые приемы: динамические даты и условные расчеты
Для сложных задач можно комбинировать функции дат с логическими проверками. Примеры:
Для визуализации разницы дат используйте условное форматирование:
- Выделите ячейки с датами.
- Перейдите в
Главная → Условное форматирование → Правила выделения ячеек → Другие правила. - Выберите "Форматировать только ячейки, которые содержат" → "Значение" → "меньше" →
=СЕГОДНЯ(). - Задайте красный цвет для просроченных дат.
=ЦЕЛОЕ((B2-A2)/7)
Это полезно для планирования спринтов в Agile или еженедельных отчетов.-->
FAQ: Ответы на частые вопросы
🔹 Почему при вычитании дат получается отрицательное число?
Это означает, что вы вычитаете более позднюю дату из более ранней (например, 01.01.2026 - 10.01.2026). Чтобы всегда получать положительный результат, используйте функцию АБС:
=АБС(B2-A2)
Или поменяйте местами ячейки: =A2-B2.
🔹 Как посчитать возраст человека по дате рождения?
Используйте функцию РАЗНДАТ с единицей "y" для полных лет:
=РАЗНДАТ(датарождения; СЕГОДНЯ(); "y")
Для точного возраста (с месяцами и днями):
=РАЗНДАТ(A2;СЕГОДНЯ();"y") & " лет, " & РАЗНДАТ(A2;СЕГОДНЯ();"ym") & " мес., " & РАЗНДАТ(A2;СЕГОДНЯ();"md") & " дн."
Важно: если дата рождения сегодня, Excel может показать 0 лет. Чтобы исправить это, добавьте проверку:
=ЕСЛИ(A2=СЕГОДНЯ(); "Сегодня день рождения!"; РАЗНДАТ(A2;СЕГОДНЯ();"y"))
🔹 Можно ли вычесть время без даты?
Да, если ячейки имеют формат "Время" (например, 14:30). Формула:
= (B1-A1)*24
вернет разницу в часах. Для минут умножьте на 1440 (24*60), для секунд — на 86400 (24*60*60).
Пример: если A1=09:00, а B1=17:30, то =ТЕКСТ((B1-A1)*24; "0.00") вернет 8.50 (часов).
🔹 Как посчитать разницу между датами в разных временных зонах?
Excel не поддерживает временные зоны напрямую. Решения:
- Приведите обе даты к одной временной зоне вручную (например, добавьте/вычтите часы).
- Используйте надстройки (например, Kutools for Excel), которые поддерживают работу с UTC.
- Для Google Таблиц используйте функцию
=НАЧПОЛНЕД(дата; смещение; выходной)с учетом смещения.
=B2-A2+ВРЕМЯ(3;0;0)
где ВРЕМЯ(3;0;0) — корректировка на 3 часа (например, для перевода из MSK в UTC+0).
🔹 Почему функция ЧИСТРАБДНИ не учитывает перенос выходных?
Функция ЧИСТРАБДНИ по умолчанию считает выходными только субботу и воскресенье. Если выходные перенесены (например, в России майские праздники), их нужно добавить в третий аргумент функции как диапазон дат. Пример для мая 2026 года (выходные перенесены на 4, 5, 6 мая):
=ЧИСТРАБДНИ("01.05.2026"; "10.05.2026"; {"04.05.2026";"05.05.2026";"06.05.2026"})
Альтернатива: создайте отдельный список всех нерабочих дней (включая перенесенные выходные) и ссылайтесь на него в формуле.