Как вычесть даты в Excel: 5 способов с формулами и примерами

Вычитание дат в 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") & " мес."
Как автоматически обновлять разницу дат при открытии файла?

Функция СЕГОДНЯ() пересчитывается при каждом открытии книги. Если вам нужно зафиксировать дату расчёта, используйте:

  1. Вставьте текущую дату как значение: Ctrl + ; (Windows) или Cmd + ; (Mac).
  2. Или используйте VBA-макрос для автоматического обновления при открытии.