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

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

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

Все примеры в статье актуальны для Excel 2016–2023 и Microsoft 365, но большинство формул будут работать и в более ранних версиях (2010–2013). Для пользователей Google Таблиц мы также укажем аналоги функций, где это необходимо.

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

Самый простой способ узнать количество дней между двумя датами — вычесть одну дату из другой. Excel автоматически преобразует результат в числовой формат, где 1 = 1 день. Этот метод работает и для будущих, и для прошедших дат.

Пример:

=B2-A2

где A2 — ячейка с начальной датой, а B2 — с конечной. Если результат отрицательный, это означает, что конечная дата раньше начальной.

  • 📅 Формат ячеек: Убедитесь, что обе ячейки имеют формат Дата (выделите ячейку → Главная → Формат → Формат ячеек → Дата). Иначе Excel воспримет значения как текст.
  • Быстрое форматирование: Нажмите Ctrl+1 (Windows) или Cmd+1 (Mac), чтобы открыть окно формата.
  • 🔄 Отрицательные значения: Если вам нужны только положительные числа, используйте функцию АБС():
    =АБС(B2-A2)

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

2. Как посчитать только рабочие дни (без выходных)

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

Синтаксис:

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

где [праздники] — необязательный диапазон ячеек с датами праздников.

Формула Пример Результат
=ЧИСТРАБДНИ("10.01.2026"; "20.01.2026") Дни с 10 по 20 января 2026 (без выходных) 9
=ЧИСТРАБДНИ(A2; B2; D2:D5) Дни с учётом праздников в ячейках D2:D5 Зависит от дат
=ЧИСТРАБДНИ.МЕЖД("10.01.2026"; "20.01.2026"; 1) Рабочие дни + суббота как рабочий день 11

Функция ЧИСТРАБДНИ.МЕЖД()Google ТаблицахNETWORKDAYS.INTL) позволяет настраивать, какие дни считать выходными. Например, для графиков работы "2 через 2" или "пятидневки с плавающими выходными".

Как указать нестандартные выходные в ЧИСТРАБДНИ.МЕЖД?

Параметр "[выходные]" в функции ЧИСТРАБДНИ.МЕЖД() задаётся числом от 1 до 11 или строкой из 7 символов (например, "0000011" для выходных в субботу и воскресенье). Примеры:

  • 1 — выходные: Сб, Вс (стандарт)
  • 11 — выходной только Вс
  • "0000011" — выходные: Сб, Вс (аналог 1)
  • "1000001" — выходные: Пн, Вс

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

3. Прибавление и вычитание дней к дате

Чтобы сдвинуть дату на определённое количество дней вперёд или назад, просто прибавьте или вычтите число к ячейке с датой. Excel автоматически скорректирует результат.

Примеры:

=A2 + 15   

=A2 - 7

Если нужно прибавить рабочие дни (игнорируя выходные), используйте функцию РАБДЕНЬ():

=РАБДЕНЬ(A2; 10)   

  • 📆 Отрицательные значения: В формуле РАБДЕНЬ(A2; -5) дата сдвинется на 5 рабочих дней назад.
  • 🎉 Праздники: Чтобы учесть праздники, добавьте третий аргумент:
    =РАБДЕНЬ(A2; 10; D2:D10)
  • 🔄 Цикличный сдвиг: Если результат выходит за пределы месяца, Excel автоматически перенесёт его на следующий (например, 31 января + 5 дней = 5 февраля).
📊 Как часто вы используете расчёты с датами в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда

Для сложных сценариев (например, прибавление месяцев или лет) используйте функцию ДАТАМЕС():

=ДАТАМЕС(A2; 3)   

=ДАТАМЕС(A2; -1)

Она автоматически корректирует даты с учётом разной длины месяцев (например, 31 января + 1 месяц = 28/29 февраля).

4. Расчёт дней с учётом праздников и индивидуальных графиков

Если ваша компания работает по нестандартному графику (например, с плавающими выходными или короткой рабочей неделей), стандартные функции Excel могут не подойти. В таких случаях используйте комбинацию функций или создайте пользовательскую функцию на VBA.

Пример для графика "2 через 2" (2 рабочих дня, 2 выходных):

=ЧИСТРАБДНИ.МЕЖД(A2; B2; "0011001")

Здесь строка "0011001" означает:

  • 0 — рабочий день
  • 1 — выходной

То есть выходные приходятся на среду, четверг и воскресенье.

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

  1. Скачать актуальный календарь с сайта КонсультантПлюс.
  2. Импортировать даты праздников в отдельный лист Excel.
  3. Ссылаться на этот диапазон в функции ЧИСТРАБДНИ().

Создать отдельный лист "Праздники"|Скачать официальный производственный календарь|Вставить даты праздников в столбец A|Присвоить диапазону имя (например, "Праздники_2026")|Использовать имя диапазона в формуле-->

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

5. Определение количества полных недель, месяцев или лет между датами

Иногда требуется посчитать не дни, а полные недели, месяцы или годы между двумя датами. Для этого используйте функцию РАЗНДАТ()Google ТаблицахDATEDIF).

Синтаксис:

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

Где "код_единицы" может быть:

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

Примеры:

=РАЗНДАТ("01.01.2023"; "31.12.2023"; "y")   

=РАЗНДАТ("01.01.2023"; "01.01.2026"; "y")

=РАЗНДАТ("01.01.2023"; "15.03.2023"; "m")

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

=ЦЕЛОЕ((B2-A2)/7)

где ЦЕЛОЕ() округляет результат до ближайшего целого числа вниз.

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

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

Ошибка Причина Решение
Формула возвращает ###### Слишком большая разница между датами или отрицательный результат Расширьте столбец или используйте АБС()
Результат #ЗНАЧ! Ячейка содержит текст вместо даты Проверьте формат ячеек (Главная → Формат → Формат ячеек)
Неправильное количество рабочих дней Не указаны праздники или неверный формат дат в списке праздников Убедитесь, что праздники введены как даты, а не текст
Функция РАЗНДАТ не работает Опечатка в названии функции (например, РАЗНДАТА) Введите функцию вручную — автозаполнение для неё не работает

Ещё одна частая проблема — некорректное отображение дат после импорта данных. Например, дата 01.12.2023 может отобразиться как 12.01.2023, если Excel неправильно определил региональные настройки. Чтобы исправить это:

  1. Выделите проблемные ячейки.
  2. Перейдите в Данные → Текст по столбцам.
  3. На шаге 3 выберите формат ДМГ (день, месяц, год).

Если вы работаете с историческими датами (до 1900 года), помните, что Excel для Windows поддерживает даты только с 01.01.1900, а для Mac — с 01.01.1904. Для расчётов с более ранними датами потребуется использовать текстовый формат или специализированные надстройки.

7. Автоматизация расчётов: динамические диапазоны и Power Query

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

1. Динамические именованные диапазоны

Создайте именованный диапазон для праздников, который будет автоматически расширяться при добавлении новых дат:

=СМЕЩ(Лист1!$A$1;0;0;СЧЁТЗ(Лист1!$A:$A);1)

Теперь в формулах можно ссылаться на имя диапазона (например, Праздники) вместо фиксированного адреса.

2. Power Query для импорта производственного календаря

Если праздники хранятся во внешнем файле (например, CSV), импортируйте их через Данные → Получить данные → Из файла. Power Query позволит:

  • 🔄 Обновлять список праздников одним кликом.
  • 📊 Фильтровать даты по годам или регионам.
  • 🔗 Связывать данные с основной таблицей.

3. Пользовательские функции на VBA

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

Function CustomWorkDays(start_date, end_date, weekend_pattern As String) As Integer

' weekend_pattern — строка из 7 символов (0=рабочий, 1=выходной)

' Например, "0000011" для стандартных выходных (сб, вс)

Dim days_count As Integer, i As Integer

days_count = 0

For i = start_date To end_date

If Mid(weekend_pattern, Weekday(i), 1) = "0" Then days_count = days_count + 1

Next i

CustomWorkDays = days_count

End Function

Чтобы использовать её, нажмите Alt+F11, вставьте код в модуль и сохраните файл как .xlsm.

FAQ: Ответы на частые вопросы

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

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

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

Эта формула вернёт разницу в днях, только если обе даты заполнены. В Google Таблицах замените ISBLANK на ИСПУСТО.

Можно ли посчитать дни с учётом полурабочих дней (например, суббота — короткий день)?

Стандартные функции Excel не поддерживают полурабочие дни. Решения:

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

Почему функция ЧИСТРАБДНИ игнорирует мои праздники?

Проверьте:

  • Формат ячеек с праздниками — они должны быть в формате Дата, а не Текст.
  • Диапазон праздников указан корректно (например, D2:D10, а не D2:D).
  • В списке нет пустых ячеек или ошибочных значений (например, 32.01.2026).

Чтобы проверить формат, выделите ячейку и посмотрите на строку формул — дата должна отображаться как число (например, 45301 для 01.01.2026).

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

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

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

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

Чтобы результат обновлялся автоматически, включите пересчёт формул: Формулы → Вычисления → Автоматически.

Можно ли в Excel посчитать дни с учётом часов и минут?

Да, если ячейки имеют формат Дата и время. Например:

= (B2-A2)*24   

= (B2-A2)*1440

Чтобы отобразить результат в днях, часах и минутах, используйте формат ячейки [ч]:мм:сс или создайте пользовательский формат:

д "дней" ч:мм