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

Если вы пытаетесь вычислить разницу между двумя датами в Microsoft Excel и получаете некорректный результат — проблема чаще всего кроется в формате ячеек или неправильном использовании функций. Например, формула =B2-A2 вернет количество дней между датами в ячейках A2 и B2, но только если обе ячейки имеют формат Дата, а не Общий или Текст. При ошибке формата Excel может воспринимать даты как текстовые строки, и вместо числа дней вы получите бессмысленный код ошибки #ЗНАЧ! или ноль.

Количество дней в Excel рассчитывается по-разному в зависимости от задачи: простое вычитание дат (включая выходные), подсчет только рабочих дней (с учетом субботы/воскресенья) или исключение праздников. Для этих целей используются специализированные функции — DATEDIF, NETWORKDAYS, DAYS360 и другие. При этом функция DATEDIF отсутствует в официальной документации Excel, но работает во всех версиях программы, включая Excel 365 и Excel 2021.

1. Базовый расчет: сколько дней между двумя датами

Самый простой способ узнать количество дней — вычесть одну дату из другой. Например, если в ячейке A1 указана дата начала проекта (01.01.2026), а в B1 — дата окончания (31.01.2026), формула =B1-A1 вернет 30 дней. Этот метод работает, потому что Excel хранит даты как последовательные числа (начиная с 1 января 1900 года), где 1 день = 1 единица.

Чтобы избежать ошибок:

  • 🔹 Убедитесь, что ячейки с датами имеют формат Дата (выделите ячейку → ГлавнаяФормат ячеекДата).
  • 🔹 Если дата введена как текст (например, "01.01.2026" без форматирования), используйте функцию ДАТАЗНАЧ: =ДАТАЗНАЧ("01.01.2026").
  • 🔹 Для отображения результата в днях (а не в формате даты) установите для ячейки с формулой формат Общий или Числовой.

Пример с текстовой датой:

=ДАТАЗНАЧ("31.01.2026") - ДАТАЗНАЧ("01.01.2026")  // Результат: 30
⚠️ Внимание: Если после вычитания дат результат отображается как дата (например, "30.01.1900"), измените формат ячейки на Общий. Это не ошибка — Excel интерпретирует число 30 как количество дней с 1 января 1900 года.

2. Функция DATEDIF: расчет дней, месяцев и лет

Функция DATEDIF (от англ. Date Difference) позволяет гибко вычислять разницу между датами в днях, месяцах или годах. Ее синтаксис:

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

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

ПараметрОписаниеПример результата
"D"Количество полных дней=DATEDIF("01.01.2026"; "31.01.2026"; "D") → 30
"M"Количество полных месяцев=DATEDIF("01.01.2026"; "31.03.2026"; "M") → 2
"Y"Количество полных лет=DATEDIF("01.01.2020"; "31.12.2023"; "Y") → 3
"YM"Количество месяцев без учета лет=DATEDIF("01.01.2020"; "15.03.2020"; "YM") → 2
"MD"Количество дней без учета месяцев и лет=DATEDIF("01.01.2026"; "15.01.2026"; "MD") → 14

Особенности DATEDIF:

  • 🔹 Функция не документирована в справке Excel, но работает во всех версиях.
  • 🔹 При ошибке ввода дат (например, конечная дата раньше начальной) возвращает #ЧИСЛО!.
  • 🔹 Для расчета точного количества дней между датами (включая частичные месяцы) используйте комбинацию параметров: =DATEDIF(A1; B1; "Y")*365 + DATEDIF(A1; B1; "YM")*30 + DATEDIF(A1; B1; "MD").
=DATEDIF(A1; B1; "Y") & " лет, " & DATEDIF(A1; B1; "YM") & " мес., " & DATEDIF(A1; B1; "MD") & " дней"

где A1 — дата рождения, B1 — текущая дата.-->

3. Подсчет рабочих дней: функция NETWORKDAYS

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

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

Необязательный параметр [праздники] позволяет указать диапазон ячеек с датами праздничных дней, которые также следует исключить из расчета.

Примеры:

  • 📅 =NETWORKDAYS("01.01.2026"; "31.01.2026") → 22 рабочих дня (из 31 календарного).
  • 📅 Если в ячейках D1:D5 указаны праздники (например, 1–8 января), формула примет вид: =NETWORKDAYS("01.01.2026"; "31.01.2026"; D1:D5) → 17 рабочих дней.
⚠️ Внимание: Функция NETWORKDAYS считает субботу и воскресенье выходными по умолчанию. Если у вас другой график (например, выходной — пятница), используйте NETWORKDAYS.INTL с параметром для указания выходных дней.
📊 Как часто вы используете расчет рабочих дней в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

4. Расчет дней в финансовом году: функция DAYS360

Функция DAYS360 (в русскоязычной версии — ДНИ360) используется для финансовых расчетов, где год условно принимается за 360 дней (12 месяцев по 30 дней). Ее синтаксис:

=DAYS360(начальная_дата; конечная_дата; [метод])

Параметр [метод] определяет способ обработки дат:

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

Пример:

=DAYS360("01.01.2026"; "31.01.2026")  // Результат: 30 (несмотря на 31 календарный день)

Где применяется DAYS360:

  • 💰 Расчет процентов по кредитам.
  • 📈 Финансовое моделирование (например, амортизация).
  • 📊 Бухгалтерские отчеты, где требуется стандартизированный подсчет.
Почему DAYS360 возвращает 360, а не 365 дней?

Функция основана на упрощенной модели, где каждый месяц считается равным 30 дням. Это упрощает финансовые расчеты, так как исключает вариативность количества дней в месяцах (28–31). Такой подход исторически используется в банковской сфере для стандартизации процентных начислений.

5. Ошибки при расчете дней и как их избежать

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

ОшибкаПричинаРешение
#ЗНАЧ!Ячейка содержит текст вместо даты.Используйте ДАТАЗНАЧ или измените формат ячейки на Дата.
#ЧИСЛО!Конечная дата раньше начальной.Поменяйте даты местами или проверьте корректность ввода.
Некорректный результат (например, 43100 вместо 30)Ячейка с результатом имеет формат Дата.Установите формат Общий или Числовой.
Функция DATEDIF не работаетОпечатка в названии функции (например, DATEIF).Проверьте синтаксис: =DATEDIF (все буквы заглавные).

Дополнительные нюансы:

  • 🔍 Если дата введена как 01-01-2026 (через дефис), Excel может воспринять ее как текст. Замените дефисы на точки или используйте ДАТАЗНАЧ.
  • 🔍 В некоторых региональных настройках Excel точка воспринимается как разделитель тысяч, а не дат. В этом случае используйте функцию ДАТА: =ДАТА(2026; 1; 1).

🗹 Убедитесь, что ячейки с датами имеют формат Дата

🗹 Проверьте, что конечная дата не раньше начальной

🗹 Если используете текстовую дату, оберните ее в ДАТАЗНАЧ

🗹 Для финансовых расчетов выберите DAYS360 вместо простого вычитания-->

6. Продвинутые приемы: динамические даты и условный подсчет

Для сложных задач (например, подсчета дней до сегодняшней даты или расчета с учетом переменных праздников) используйте комбинации функций:

1. Расчет дней до сегодняшней даты:

=SEГОДНЯ() - A1

Где A1 — ячейка с исходной датой. Функция SEГОДНЯ() (или ТДАТА() в русскоязычной версии) всегда возвращает текущую дату.

2. Подсчет дней с учетом динамических праздников:

Если праздники хранятся в отдельном листе (например, лист "Праздники", столбец A), используйте:

=NETWORKDAYS(A1; B1; Праздники!A:A)

3. Условный подсчет (например, дни с продажами выше 1000):

Предположим, в столбце A — даты, в столбце B — суммы продаж. Чтобы посчитать количество дней с продажами > 1000:

=СЧЁТЕСЛИ(B:B; ">1000")

4. Расчет дней между датами в разных временных зонах:

Если даты приходят из разных источников (например, UTC и местное время), сначала приведите их к одному формату с помощью ВРЕМЯ или вычитания разницы в часах:

= (B1 + ВРЕМЯ(3;0;0)) - A1

Где ВРЕМЯ(3;0;0) добавляет 3 часа к дате в B1 (например, для перевода из UTC в московское время).

7. Альтернативные способы: Power Query и VBA

Если стандартных функций Excel недостаточно, рассмотрите следующие инструменты:

1. Power Query (для обработки больших массивов дат):

  • 📊 Импортируйте данные с датами через ДанныеПолучить данныеИз таблицы/диапазона.
  • 📊 Добавьте столбец с разницей дат: выделите столбец с датой → Добавить столбецВычитание.
  • 📊 Для подсчета рабочих дней используйте язык M в Power Query:
// Пример кода M для подсчета рабочих дней

let

StartDate = #date(2026, 1, 1),

EndDate = #date(2026, 1, 31),

Holidays = {#date(2026, 1, 1), #date(2026, 1, 7)},

DaysDiff = Duration.Days(EndDate - StartDate) + 1,

WorkDays = List.Count(List.Dates(StartDate, DaysDiff, #duration(1,0,0,0))),

NonWorkDays = List.Count(List.Intersect({DaysDiff}, Holidays)) + (DaysDiff / 7 * 2)

in

DaysDiff - NonWorkDays

2. VBA (для автоматизации):

Создайте пользовательскую функцию для подсчета дней с учетом индивидуальных выходных:

Function CustomWorkDays(StartDate As Date, EndDate As Date, Optional Holidays As Range) As Long

Dim DayCount As Long, i As Long

DayCount = 0

For i = StartDate To EndDate

If Weekday(i, vbMonday) < 6 Then ' Пн-Пт — рабочие дни

If Not IsEmpty(Holidays) Then

If WorksheetFunction.CountIf(Holidays, i) = 0 Then

DayCount = DayCount + 1

End If

Else

DayCount = DayCount + 1

End If

End If

Next i

CustomWorkDays = DayCount

End Function

Вызов функции в ячейке:

=CustomWorkDays(A1; B1; D1:D10)

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

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

Используйте функцию ЕСЛИ для проверки заполненности ячейки:

=ЕСЛИ(И(NOT(ISBLANK(A1)); NOT(ISBLANK(B1))); B1-A1; "Данные неполные")

Где A1 и B1 — ячейки с датами. Если хотя бы одна ячейка пустая, формула вернет текст "Данные неполные".

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

Это означает, что конечная дата раньше начальной. Поменяйте их местами или используйте функцию ABS для получения абсолютного значения:

=ABS(B1-A1)
Как посчитать дни между датами без учета выходных, но с учетом конкретных рабочих дней (например, с понедельника по четверг)?

Используйте функцию NETWORKDAYS.INTL с параметром для указания выходных дней. Например, для рабочих дней с понедельника по четверг:

=NETWORKDAYS.INTL(A1; B1; 11; D1:D10)

Где 11 — код для выходных дней (пятница, суббота, воскресенье), а D1:D10 — диапазон с праздниками.

Список кодов для NETWORKDAYS.INTL:

  • 📅 1 — суббота, воскресенье (стандартный)
  • 📅 2 — воскресенье, понедельник
  • 📅 11 — пятница, суббота, воскресенье
  • 📅 17 — суббота (только один выходной)
Можно ли посчитать количество дней между датами в Google Таблицах?

Да, в Google Sheets используются аналогичные функции:

  • 📑 =B1-A1 — простое вычитание дат.
  • 📑 =DATEDIF(A1; B1; "D") — количество дней.
  • 📑 =NETWORKDAYS(A1; B1) — рабочие дни.
  • 📑 =DAYS360(A1; B1) — финансовый расчет.

Отличие: в Google Таблицах функция DATEDIF документирована и доступна в справке.

Как посчитать количество дней в текущем месяце?

Используйте комбинацию функций ДЕНЬ, МЕСЯЦ и ГОД:

=ДЕНЬ(ДАТА(ГОД(СЕГОДНЯ()); МЕСЯЦ(СЕГОДНЯ())+1; 0))

Формула возвращает количество дней в текущем месяце (например, 31 для января, 28/29 для февраля).