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

Вычитание дат в Microsoft Excel часто приводит к ошибкам из-за неверного формата ячеек или неправильного выбора формулы. Если при попытке найти разницу между 15.05.2026 и 20.05.2026 вы получаете не число дней, а бессмысленный код типа 45789 — проблема в формате данных. Даже корректное вычитание =B2-A2 может дать сбой, если одна из ячеек содержит текст вместо даты. Чтобы избежать таких ошибок, нужно не только знать базовые формулы, но и понимать, как Excel хранит даты (внутренний порядковый номер) и как это влияет на расчёты.

В 90% случаев для подсчёта дней достаточно простого вычитания или функции DATEDIF, но есть нюансы: учёт выходных, рабочих дней, месяцев или лет. Например, формула =DATEDIF(A2;B2;"d") вернёт полное количество дней, а =NETWORKDAYS(A2;B2) — только рабочие, исключая субботу и воскресенье. Если вам нужно посчитать дни между сегодняшней датой и будущей, используйте TODAY() — но помните, что эта функция пересчитывается автоматически при каждом открытии файла.

Почему Excel показывает не дни, а числа вроде 45789

Когда вы вводите дату в ячейку Excel, программа преобразует её в порядковый номер, где 1 соответствует 01.01.1900. Например, 15.05.2026 — это число 45415. При вычитании двух дат (=B2-A2) вы получаете разницу именно этих внутренних чисел, которая и равна количеству дней. Если вместо дней отображается дата (например, 12.01.1905), значит:

  • 🔴 Формат ячейки с результатом установлен как Дата, а не Общий или Числовой.
  • 🔴 Одна из ячеек содержит текст (например, "15 мая" вместо 15.05.2026).
  • 🔴 Используется неверный разделитель даты (точка вместо косой черты в некоторых локалях).

Чтобы исправить это, выделите ячейку с результатом, нажмите Ctrl+1 (или правая кнопка → Формат ячеек) и выберите формат Числовой или Общий. Если проблема в текстовом формате исходных данных, преобразуйте их в даты с помощью функции ДАТАЗНАЧ() (англ. DATEVALUE()).

⚠️ Внимание: В Excel для Mac и некоторых локалях по умолчанию используется система дат 1904, где 0 — это 01.01.1904. Чтобы проверить систему, перейдите в Файл → Параметры → Дополнительно и найдите опцию При переходе на другую книгу. Если там стоит галочка Использовать систему дат 1904, разница в днях будет на 1462 меньше.

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

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

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

Пример: чтобы посчитать дни между 10.01.2026 (ячейка A2) и 25.01.2026 (ячейка B2), введите:

=B2-A2

Результат — 15 дней. Этот метод работает даже если одна из дат — сегодняшняя. Например, чтобы узнать, сколько дней прошло с 01.01.2026 до текущей даты:

=TODAY()-A2

1. Убедитесь, что обе ячейки имеют формат Дата (выделите → Ctrl+1 → категория Дата).

2. Проверьте, что в ячейках нет текста (например, "январь 2026" вместо 01.01.2026).

3. Если результат отображается как дата (например, 12.01.1900), измените формат ячейки с результатом на Числовой.

4. Для динамического подсчёта от сегодняшней даты используйте TODAY() вместо фиксированной даты.-->

Способ 2: Функция DATEDIF — гибкий подсчёт дней, месяцев, лет

Функция DATEDIF (от англ. DATE DIFFerence) позволяет посчитать не только дни, но и месяцы или годы между датами. Её синтаксис:

=DATEDIF(Начальная_дата; Конечная_дата; "Единица_измерения")

Аргумент Единица_измерения может принимать следующие значения:

Код Что считает Пример результата
"d" Количество дней =DATEDIF("1.01.2026";"10.01.2026";"d")9
"m" Количество полных месяцев =DATEDIF("1.01.2026";"1.03.2026";"m")2
"y" Количество полных лет =DATEDIF("1.01.2020";"1.01.2026";"y")4
"yd" Дни с начала года (игнорирует годы) =DATEDIF("1.01.2026";"15.03.2026";"yd")74
"md" Дни с начала месяца (игнорирует месяцы и годы) =DATEDIF("1.03.2026";"15.03.2026";"md")14

Особенность DATEDIF: она учитывает полные периоды. Например, между 31.12.2023 и 01.01.2026 функция вернёт 0 месяцев ("m"), так как не прошёл полный месяц. Чтобы посчитать все дни, включая неполные месяцы, используйте комбинацию:

=DATEDIF(A2;B2;"y") & " лет, " & DATEDIF(A2;B2;"ym") & " мес, " & DATEDIF(A2;B2;"md") & " дней"

1. Правильность написания функции (регистр не важен, но опечатки критичны).

2. Локаль Excel: в русскоязычной версии используйте точку с запятой (;) как разделитель аргументов, в англоязычной — запятую (,).

3. Формат дат: обе ячейки должны содержать корректные даты, а не текст.-->

Способ 3: NETWORKDAYS — подсчёт только рабочих дней

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

=NETWORKDAYS(Начальная_дата; Конечная_дата; [Праздники])

Аргумент [Праздники] необязателен — это диапазон ячеек с датами праздников, которые тоже нужно исключить. Пример: посчитать рабочие дни между 01.05.2026 и 10.05.2026, исключая 1 и 9 мая (праздники в ячейках D2:D3):

=NETWORKDAYS("1.05.2026";"10.05.2026";D2:D3)

Результат — 6 рабочих дней (исключены 1, 4, 5, 9 мая и выходные). Если праздников нет, третий аргумент можно опустить:

=NETWORKDAYS(A2;B2)
⚠️ Внимание: Функция NETWORKDAYS считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, выходной — пятница), используйте NETWORKDAYS.INTL, где можно указать свои выходные дни.

Способ 4: DAYS и DAYS360 — альтернативные функции

Для простых расчётов можно использовать функции DAYS (в русскоязычной версии — ДНИ) и DAYS360 (ДНИ360). Их отличие:

  • 📅 DAYS — возвращает разницу в календарных днях (аналог простого вычитания, но с проверкой формата).
  • 📊 DAYS360 — считает дни по "банковскому" правилу (360 дней в году, 30 дней в месяце), что удобно для финансовых расчётов.

Примеры:

=DAYS("10.05.2026";"20.05.2026")  → 10 дней

=DAYS360("1.01.2026";"31.12.2026") → 360 дней (вместо реальных 366)

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

Простое вычитание|DATEDIF|NETWORKDAYS|DAYS/DAYS360|Другой вариант-->

Способ 5: Подсчёт дней с учётом времени (даты + время)

Если ваши даты содержат не только день, но и время (например, 15.05.2026 14:30), простое вычитание вернёт дробное число, где целая часть — дни, а дробная — доля суток. Например:

=("17.05.2026 18:00"-"15.05.2026 9:00")  → 2,375 (2 дня и 9 часов)

Чтобы разделить дни и часы:

  • 🕒 Для получения полных дней используйте =ЦЕЛОЕ(B2-A2).
  • ⏱️ Для получения часов (включая дни): =(B2-A2)*24.
  • ⏲️ Для получения минут: =(B2-A2)*1440.

Пример: если в A215.05.2026 9:00, а в B217.05.2026 18:00, то:

=ЦЕЛОЕ(B2-A2)  → 2 (полных дня)

=(B2-A2)*24 → 57 (часов всего)

=(B2-A2)*1440 → 3420 (минут всего)

Почему Excel иногда округляет время при вычитании дат

При вычитании дат с временем Excel использует внутреннее представление, где 1 = 1 день, а 0,5 = 12 часов. Если формат ячейки с результатом — Общий, дробная часть может отображаться некорректно (например, 2,375 вместо 2,375000). Чтобы увидеть полное значение, установите формат Числовой с 6–8 знаками после запятой.

Типичные ошибки и как их избежать

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

  1. Ошибка #ЗНАЧ!: возникает, если одна из ячеек содержит текст вместо даты. Проверьте формат с помощью ЕЧИСЛО():
  2. =ЕЧИСЛО(A2)

    Если результат ЛОЖЬ, преобразуйте текст в дату функцией ДАТАЗНАЧ().

  3. Ошибка #ИМЯ?: означает, что Excel не распознаёт имя функции. Убедитесь, что используете правильный язык (например, DATEDIF работает только на английском, даже в русскоязычной версии).

  4. Неправильный результат: если разница в днях кажется завышенной, проверьте систему дат (1900 или 1904) в настройках Excel.

Ещё одна частая проблема — автоматическое изменение формата даты. Например, при вводе 05.06.2026 Excel может интерпретировать это как 5 июня (если в системе установлен формат ДМГ) или как март 6, 2026 (если формат МДГ). Чтобы избежать путаницы, используйте функцию ДАТА():

=ДАТА(2026;5;15)  → 15.05.2026 (независимо от региональных настроек)

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

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

Если одна из ячеек пустая, используйте функцию ЕПУСТО() для проверки. Пример:

=ЕСЛИ(ИЛИ(ЕПУСТО(A2);ЕПУСТО(B2));"Данные неполные";B2-A2)

Эта формула вернёт сообщение об ошибке, если хотя бы одна ячейка пуста.

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

Да, используйте ссылки на листы. Например, если начальная дата на Лист1 в A2, а конечная на Лист2 в B2:

=Лист2!B2-Лист1!A2

Убедитесь, что имена листов не содержат пробелов или специальных символов (или возьмите их в одинарные кавычки: 'Мой лист'!A2).

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

Используйте функцию TODAY() (в русскоязычной версии — СЕГОДНЯ()). Пример:

=A2-TODAY()  → дней до даты в ячейке A2

=TODAY()-A2 → дней с даты в ячейке A2 до сегодня

Обратите внимание: TODAY() обновляется при каждом открытии файла.

Как исключить праздники из подсчёта рабочих дней?

Создайте список праздников в отдельном диапазоне (например, D2:D10) и укажите его в NETWORKDAYS:

=NETWORKDAYS(A2;B2;D2:D10)

Праздники должны быть в формате дат, а не текста.

Почему результат отрицательный?

Отрицательное число дней означает, что начальная дата позже конечной. Поменяйте ячейки местами или используйте =ABS(B2-A2), чтобы получить абсолютное значение (модуль).