Разница в днях между датами в Excel: формулы, примеры и секреты точных расчетов

Почему Excel иногда ошибается в расчетах дней — и как этого избежать

Вы когда-нибудь сталкивались с ситуацией, когда Excel упрямо показывает неверную разницу между двумя датами? Например, вместо 30 дней вы получаете 29 или странное число с дробной частью? Проблема кроется не в программе, а в том, как Excel хранит и интерпретирует даты. Дело в том, что для Excel любая дата — это просто число, где 1 соответствует 1 января 1900 года, а текущая дата — это количество дней с той поры. Именно поэтому операции с датами требуют особого подхода.

В этой статье мы разберём не только базовые формулы типа =ДАТАЗНАЧ() или простое вычитание, но и малоизвестные функции вроде ДНЕЙ360, которые учитывают финансовые периоды. Вы узнаете, как правильно обрабатывать даты с временем (15.05.2026 14:30), почему иногда появляются ошибки #ЗНАЧ!, и как обойти ограничения Excel при работе с историческими датами до 1900 года. А ещё — уникальный способ расчёта рабочих дней с учётом праздников без использования VBA.

Но прежде чем переходить к формулам, давайте разберёмся с основным правилом: Excel не понимает даты как текст. Если вы введёте 31.12.2026 в ячейку с текстовым форматом, программа воспримет это как обычную строку, и все расчёты пойдут наперекосяк. Поэтому первый шаг — всегда проверять формат ячеек.

Способ 1: Простое вычитание дат (самый быстрый метод)

Если вам нужно быстро узнать количество дней между двумя датами, достаточно вычесть одну из другой. Например, если в ячейке A1 у вас дата начала проекта (01.01.2026), а в B1 — дата окончания (15.03.2026), формула будет такой:

=B1-A1

Excel автоматически вернёт разницу в днях — в нашем случае 74. Но здесь есть несколько подводных камней:

  • 📅 Формат ячеек должен быть "Дата". Если одна из ячеек отформатирована как текст, результат будет некорректным (например, #ЗНАЧ!).
  • Время учитывается. Если в датах указано время (например, 01.01.2026 10:00), результат будет дробным (например, 74,58 — 74 дня и 14 часов).
  • 🔄 Порядок важен. Если вычесть более позднюю дату из ранней, результат будет отрицательным.

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

Способ 2: Функция ДАТАЗНАЧ — когда даты хранятся как текст

Допустим, у вас есть таблица, где даты импортированы из внешнего источника (например, CSV-файла) и хранятся как текст: "05.05.2026" вместо нормальной даты. Если попробовать их вычесть, Excel выдаст ошибку. Здесь на помощь приходит функция ДАТАЗНАЧ, которая преобразует текст в дату:

=ДАТАЗНАЧ("15.03.2026") - ДАТАЗНАЧ("01.01.2026")

Но есть нюанс: формат текстовой даты должен соответствовать региональным настройкам Excel. Например, в русской версии Excel по умолчанию используется формат ДД.ММ.ГГГГ. Если ваша дата в формате ММ/ДД/ГГГГ (как в американских источниках), формула не сработает. В этом случае придётся сначала заменить разделители или использовать ПОДСТАВИТЬ:

=ДАТАЗНАЧ(ПОДСТАВИТЬ("03/15/2026";"/";"."))

Если вы работаете с большим массивом данных, лучше создать отдельный столбец для преобразования текста в даты, а затем уже считать разницу. Это сэкономит время и уменьшит риск ошибок.

Что делать, если ДАТАЗНАЧ возвращает ошибку #ЗНАЧ!?

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

1. Некорректный формат текстовой даты (например, "15-03-2026" вместо "15.03.2026").

2. Опечатка в дате (например, "31.02.2026" — февраля нет 31-го).

3. Региональные настройки Excel не совпадают с форматом даты. В этом случае поможет функция =ДАТА(ГОД;МЕСЯЦ;ДЕНЬ), где год, месяц и день указываются отдельно.

Способ 3: ДНЕЙ360 — финансовый метод расчёта

Если вы работаете с финансовыми отчётами, бухгалтерией или кредитными договорами, обычное вычитание дат может не подойти. Дело в том, что в банковской сфере часто используется так называемый 360/360 метод, где каждый месяц условно считается за 30 дней, а год — за 360. Для этого в Excel есть специальная функция:

=ДНЕЙ360(нач_дата; кон_дата; [метод])

Параметр [метод] (необязательный) определяет, как учитывать последние дни месяца:

  • 📊 ЛОЖЬ или 0 (по умолчанию): если дата окончания приходится на 31-е число, она приравнивается к 30-му.
  • 📈 ИСТИНА или 1: используется фактическая дата (например, 31.01.2026 останется 31-м).

Пример: расчёт дней между 01.01.2026 и 31.03.2026:

  • Обычное вычитание: 31 + 29 (февраль) + 31 = 91 день.
  • ДНЕЙ360 с методом ЛОЖЬ: 30 (январь) + 30 (февраль) + 30 (март) = 90 дней.

Этот метод часто используется для расчёта процентов по кредитам или инвестициям, где важна стандартизация периодов. Однако для обычных задач (например, расчёт срока выполнения задачи) он не подходит — лучше использовать простое вычитание.

📊 Какой метод расчёта дней вы используете чаще?
Простое вычитание дат
Функция ДАТАЗНАЧ
Функция ДНЕЙ360
Другие функции (ДАТАРАЗН и т.д.)

Способ 4: Рабочие дни — как исключить выходные и праздники

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

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

Необязательный параметр [праздники] — это диапазон ячеек с датами праздников. Например, если в ячейках D1:D5 указаны праздничные дни (01.01.2026, 07.01.2026 и т.д.), формула будет такой:

=ЧИСТРАБДНИ(A1; B1; D1:D5)

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

=ЧИСТРАБДНИ.МЕЖД(A1; B1; 1; D1:D5)

Где 1 — это код выходных дней (суббота и воскресенье). Другие варианты:

  • 📅 2 — воскресенье и понедельник.
  • 📅 11 — только воскресенье.
  • 📅 17 — пятница и суббота (для мусульманских стран).

Если вам нужно посчитать рабочие дни между сегодняшней датой и будущей, используйте СЕГОДНЯ():

=ЧИСТРАБДНИ(СЕГОДНЯ(); B1; D1:D5)

☑️ Подготовка к расчёту рабочих дней

Выполнено: 0 / 4

Способ 5: Разница в годах, месяцах и днях (функция ДАТАРАЗН)

Иногда недостаточно знать только количество дней — нужны годы, месяцы и дни по отдельности. Например, для расчёта стажа сотрудника или срока действия договора. Здесь поможет функция ДАТАРАЗН (доступна в Excel 2013 и новее):

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

Параметр единица определяет, что именно возвращать:

  • 📅 "y" — полные годы.
  • 📅 "m" — полные месяцы.
  • 📅 "d" — оставшиеся дни.
  • 📅 "ym" — месяцы без учёта лет.
  • 📅 "yd" — дни без учёта лет.
  • 📅 "md" — дни без учёта месяцев и лет.

Пример: расчёт стажа сотрудника, принятого 15.05.2020, на текущую дату (СЕГОДНЯ()):

Формула Результат (на 15.05.2026) Пояснение
=ДАТАРАЗН(A1; СЕГОДНЯ(); "y") 4 Полных лет
=ДАТАРАЗН(A1; СЕГОДНЯ(); "ym") 0 Месяцев сверх полных лет
=ДАТАРАЗН(A1; СЕГОДНЯ(); "md") 0 Дней сверх полных месяцев
=ДАТАРАЗН(A1; СЕГОДНЯ(); "d") 0 Дней сверх полных лет (если даты совпадают)

Обратите внимание: ДАТАРАЗН может давать неожиданные результаты, если начальная дата позже конечной. В этом случае функция вернёт отрицательное значение. Чтобы избежать ошибок, всегда проверяйте порядок дат или используйте =АБС(ДАТАРАЗН(...)).

Ошибки и ловушки: почему Excel врёт с датами

Даже опытные пользователи иногда сталкиваются с неожиданными ошибками при работе с датами. Вот самые распространённые проблемы и их решения:

⚠️ Внимание: Если ваша дата до 1900 года (например, 01.01.1899), Excel не сможет с ней работать. Система дат в Excel начинается с 1900 года, и все более ранние даты будут восприняты как текст. Для исторических расчётов придётся использовать обходные пути, например, сдвиг дат на +100 лет.

Другие типичные ошибки:

  • 🔴 #ЗНАЧ! — обычно означает, что одна из "дат" на самом деле текст. Проверьте формат ячеек или используйте ДАТАЗНАЧ.
  • 🔴 Отрицательное число дней — вы перепутали порядок дат (начальная дата позже конечной). Используйте =АБС(кон_дата - нач_дата).
  • 🔴 Некорректное количество дней в феврале — Excel автоматически учитывает високосные годы, но если вы используете ДНЕЙ360, февраль всегда будет считаться за 30 дней.
  • 🔴 Дробные дни — означает, что в датах указано время. Используйте =ЦЕЛОЕ(разница) или =ОКРВНИЗ(разница; 0).

Особенно коварна ситуация, когда даты выглядят корректно, но на самом деле хранятся как текст. Например, если вы скопировали даты из PDF или веб-страницы, они могут быть нераспознанными. Чтобы проверить, является ли значение датой, используйте функцию =ЕДАТА:

=ЕСЛИ(ЕОШ(ДАТАЗНАЧ(A1)); "Это текст"; "Это дата")

Если результат — "Это текст", придётся вручную преобразовать данные или использовать ТЕКСТ.ПОСЛЕ/ТЕКСТ.ДО для извлечения дня, месяца и года.

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

Как посчитать дни между сегодняшней датой и будущей?

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

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

Где B1 — ячейка с будущей датой. Чтобы результат обновлялся автоматически, не забывайте сохранять файл (или включите автосохранение в Excel 365).

Почему при вычитании дат получается дробное число?

Это означает, что в одной или обеих датах указано время. Например, 15.05.2026 14:00 минус 10.05.2026 10:00 даст 5,166... (5 дней и 4 часа). Чтобы получить только целые дни, используйте:

=ЦЕЛОЕ(B1-A1)

Или отформатируйте ячейки без времени (выделите → Ctrl+1 → выберите формат "Дата" без времени).

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

Укажите имя листа перед адресом ячейки, например:

=Лист2!B1-Лист1!A1

Если имя листа содержит пробелы, возьмите его в апострофы:

='Мой лист'!B1-'Другой лист'!A1
Можно ли посчитать дни с учётом только рабочего времени (например, 8 часов в день)?

Excel не имеет встроенной функции для такого расчёта, но можно использовать комбинацию:

=ЧИСТРАБДНИ(A1; B1) * 8

Где 8 — количество рабочих часов в день. Если нужны часы с учётом праздников, добавьте диапазон с праздничными днями:

=ЧИСТРАБДНИ(A1; B1; D1:D10) * 8
Как посчитать количество полных недель между датами?

Используйте функцию =ЦЕЛОЕ или =ОКРВНИЗ с делением на 7:

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

Или, если нужно округлить до ближайшей полной недели:

=ОКРУГЛВНИЗ((B1-A1)/7; 0)