Вычитание дат в Microsoft Excel — одна из самых востребованных операций при работе с временными данными.hether вы рассчитываете сроки проектов, возраст сотрудников или продолжительность событий, умение корректно оперировать датами экономит часы ручной работы. Однако многие пользователи сталкиваются с ошибками: программа может возвращать неверные значения, если не учитывать форматы ячеек или особенности функций.
В этой статье мы разберём 5 основных методов вычитания дат — от простейшей арифметики до продвинутых функций вроде РАЗНДАТ() и DATEDIF(). Вы узнаете, как получить разницу в днях, месяцах или годах, избежать ошибок с отрицательными значениями и автоматизировать расчёты для больших массивов данных. Все примеры актуальны для Excel 2016–2026 и Excel Online.
1. Простое вычитание дат (разница в днях)
Самый интуитивный способ — вычесть одну дату из другой напрямую. Excel автоматически преобразует результат в количество дней между двумя датами. Например, формула =B2-A2 вернёт разницу между датами в ячейках B2 и A2.
Важно: этот метод работает только если обе ячейки имеют формат даты. Если одна из ячеек содержит текст (например, "01.01.2026" без форматирования), Excel вернёт ошибку #ЗНАЧ!. Чтобы проверить формат, выделите ячейку и посмотрите на панель инструментов в разделе Главная → Формат ячеек.
- 📅 Формат даты в ячейке:
дд.мм.ггггилидд-мм-гг - ❌ Ошибка при текстовом формате:
#ЗНАЧ!или некорректный результат - 🔄 Решение: используйте функцию
ДАТАЗНАЧ()для преобразования текста в дату
Пример: чтобы узнать, сколько дней прошло с 1 января 2026 года до сегодняшней даты, введите:
=СЕГОДНЯ()-ДАТА(2026;1;1)
2. Функция ДАТАРАЗН(): универсальный инструмент
Функция ДАТАРАЗН() (или DATEDIF в английской версии) позволяет гибко рассчитывать разницу в днях, месяцах или годах. Её синтаксис:
=ДАТАРАЗН(начальная_дата; конечная_дата; единица_измерения)
Аргумент единица_измерения определяет, в чём будет выражен результат:
- 📆
"d"— разница в днях - 📅
"m"— разница в полных месяцах - 🗓️
"y"— разница в полных годах - 🔄
"ym"— месяцы без учёта лет (например, разница между 01.01.2026 и 15.03.2026 вернёт 2 месяца) - 📊
"yd"— дни без учёта лет (например, разница между 01.01.2026 и 15.01.2026 вернёт 14 дней)
Функция ДАТАРАЗН() отсутствует в справочнике Excel, но работает во всех версиях программы начиная с 2007 года. Чтобы её найти, начинайте вводить название вручную — автозаполнение не сработает.
| Единица измерения | Пример формулы | Результат для дат 01.01.2026 и 31.12.2026 |
|---|---|---|
"d" |
=ДАТАРАЗН(A2;B2;"d") |
365 |
"m" |
=ДАТАРАЗН(A2;B2;"m") |
11 |
"y" |
=ДАТАРАЗН(A2;B2;"y") |
0 |
"yd" |
=ДАТАРАЗН(A2;B2;"yd") |
364 |
3. Функция РАЗНДАТ(): альтернатива для новых версий Excel
В Excel 365 и Excel 2021 появилась официальная функция РАЗНДАТ(), которая дублирует возможности ДАТАРАЗН(), но с более предсказуемым поведением. Её преимущества:
- 🔍 Поддерживается автозаполнением (в отличие от
ДАТАРАЗН) - 📈 Точнее обрабатывает високосные годы
- 🛠️ Меньше багов при работе с отрицательными датами
Синтаксис идентичен:
=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)
Пример: чтобы посчитать полные годы между датами рождения сотрудников и текущей датой, используйте:
=РАЗНДАТ(B2;СЕГОДНЯ();"y")
Почему РАЗНДАТ точнее ДАТАРАЗН?
Функция РАЗНДАТ учитывает изменения в алгоритмах расчёта дат, внесённые в Excel после 2019 года. Например, она корректно обрабатывает даты до 1900 года (которые ДАТАРАЗН может интерпретировать как 1904 год из-за исторического бага в Excel).
4. Вычитание времени (часы, минуты, секунды)
Если вам нужно вычесть не только даты, но и время, используйте тот же принцип арифметики, но с учётом формата ячеек. Например, формула =B2-A2 вернёт разницу в днях и долях дня (где 0,5 = 12 часов).
Чтобы преобразовать результат в часы, умножьте на 24:
= (B2-A2) * 24
Для минут или секунд используйте коэффициенты 1440 (24*60) и 86400 (24*60*60) соответственно.
Ячейки с датой/временем имеют формат "Дата" или "Время"|Результат вычитания отображается в общем формате (не как дата)|Для часов/минут использованы правильные коэффициенты (24/1440/86400)|-->
⚠️ Внимание: При вычитании времени убедитесь, что в настройках Excel включён параметр1904 года(в старых версиях он мог влиять на расчёты). Проверьте это вФайл → Параметры → Дополнительно → При переходе на эту книгу → Использовать систему дат 1904.
5. Расчёт рабочих дней (исключая выходные)
Для бизнес-задач часто требуется посчитать только рабочие дни, исключив субботы, воскресенья и праздники. В Excel для этого есть функция ЧИСТРАБДНИ():
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Аргумент [праздники] — необязательный диапазон ячеек с датами праздников. Например, если в ячейках D2:D10 перечислены государственные праздники, формула примет вид:
=ЧИСТРАБДНИ(A2;B2;D2:D10)
Для расчёта рабочих дней между двумя датами включительно используйте ЧИСТРАБДНИ.МЕЖД():
=ЧИСТРАБДНИ.МЕЖД(A2;B2;1;D2:D10)
| Функция | Учитывает конечную дату | Пример результата (01.01.2026–05.01.2026) |
|---|---|---|
ЧИСТРАБДНИ |
Нет | 1 (только 02.01 и 03.01 — рабочие) |
ЧИСТРАБДНИ.МЕЖД |
Да | 2 (01.01 — праздничный, 02–05.01 — 4 дня, но 01 не считается) |
6. Ошибки и их решения
Даже опытные пользователи сталкиваются с ошибками при вычитании дат. Вот самые распространённые проблемы и способы их устранения:
- 🚨
#ЗНАЧ!— одна из ячеек содержит текст. Решение: используйтеДАТАЗНАЧ()или измените формат ячейки на "Дата". - ❌ Отрицательное значение — начальная дата позже конечной. Решение: поменяйте местами аргументы или используйте
АБС(). - ⏳ Некорректный результат в днях — проверьте, не включён ли в Excel режим
1904 года(см. раздел 4). - 🔢 Результат в виде даты (например, "01.01.1900") — измените формат ячейки на "Общий".
⚠️ Внимание: ФункцияДАТАРАЗН()может давать неточные результаты при работе с датами до 1900 года из-за особенностей внутреннего представления дат в Excel. Для исторических расчётов используйтеРАЗНДАТ()или ручные вычисления.
FAQ: Частые вопросы
Как вычесть даты, если они записаны как текст (например, "01-янв-2026")?
Используйте функцию ДАТАЗНАЧ(), чтобы преобразовать текст в дату:
=ДАТАЗНАЧ("01-янв-2026")
Для диапазона ячеек примените формулу массива:
=ДАТАЗНАЧ(A2:A10)
Затем вычитайте даты как обычно.
Почему разница в месяцах между 31.01.2026 и 28.02.2026 равна 1, а не 0?
Функции ДАТАРАЗН() и РАЗНДАТ() считают полные месяцы. Поскольку 28.02.2026 наступает через 1 полный месяц после 31.01.2026 (несмотря на разницу в днях), результат будет 1. Для точного расчёта дней используйте единицу измерения "d".
Можно ли вычесть даты в Excel Online или Google Sheets?
Да, все описанные методы работают в Excel Online. В Google Sheets используйте те же формулы, но:
- Функция
ДАТАРАЗН()называетсяDATEDIF()(без локализации). - Для текущей даты используйте
TODAY()вместоСЕГОДНЯ().
Как посчитать возраст человека с учётом месяца рождения?
Используйте комбинацию функций:
=ЕСЛИ(ДАТАРАЗН(дата_рождения;СЕГОДНЯ();"y")=0; ДАТАРАЗН(дата_рождения;СЕГОДНЯ();"m") & " мес."; ДАТАРАЗН(дата_рождения;СЕГОДНЯ();"y") & " лет")
Для более точного результата (например, "2 года 3 месяца") объедините несколько функций:
=ДАТАРАЗН(A2;СЕГОДНЯ();"y") & " лет " & ДАТАРАЗН(A2;СЕГОДНЯ();"ym") & " мес."
Как автоматически обновлять разницу дат при открытии файла?
Функция СЕГОДНЯ() пересчитывается при каждом открытии книги. Если вам нужно зафиксировать дату расчёта, используйте:
- Вставьте текущую дату как значение:
Ctrl + ;(Windows) илиCmd + ;(Mac). - Или используйте VBA-макрос для автоматического обновления при открытии.