Как посчитать дни в Excel: от простых разниц до расчётов с выходными

Расчёт количества дней между датами — одна из самых востребованных операций в Microsoft Excel и Google Таблицах. Без этого не обойтись при планировании проектов, учёте рабочего времени, анализе сроков выполнения задач или даже при составлении личного бюджета. Казалось бы, что может быть проще: вычесть одну дату из другой? Но на практике пользователи сталкиваются с десятками нюансов: как исключить выходные, учесть праздники, посчитать только рабочие дни или, наоборот, выделить выходные? А что если даты записаны в нестандартном формате или хранятся в разных ячейках?

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

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

Самый очевидный способ узнать разницу между двумя датами — вычесть их друг из друга. Excel автоматически преобразует даты в порядковые номера (начиная с 1 января 1900 года), поэтому операция работает даже без специальных функций.

Пример: если в ячейке A1 указана дата начала проекта 15.05.2026, а в B1 — дата окончания 30.05.2026, достаточно ввести в C1 формулу:

=B1-A1

Результат — 15 (количество дней между датами). Но здесь есть подводные камни:

  • 🔹 Формат ячеек: если даты отображаются как текст (например, 15-мая-2026), Excel не распознаёт их как даты. Исправьте формат через Главная → Формат → Формат ячеек → Дата.
  • 🔹 Отрицательные значения: если дата окончания раньше начальной, результат будет отрицательным. Чтобы избежать этого, используйте =АБС(B1-A1).
  • 🔹 Время в датах: если в ячейках указано не только число, но и время (например, 15.05.2026 14:30), разница будет дробной (например, 15,5 дня).

2. Функция ДАТАЗНАЧ: когда даты записаны как текст

Частая проблема — даты импортируются из внешних источников (например, или CRM-систем) в текстовом формате. Например, вместо 15.05.2026 вы видите "15/05/2026" или "May 15, 2026". В этом случае простое вычитание не сработает — нужна функция ДАТАЗНАЧ (или DATEVALUE в английской версии).

Синтаксис:

=ДАТАЗНАЧ("15/05/2026")

Пример для двух ячеек с текстом:

=ДАТАЗНАЧ(B1)-ДАТАЗНАЧ(A1)

Важно: ДАТАЗНАЧ не работает с датами в формате ДД-ММ-ГГГГ (через дефис) или если день/месяц указаны словами (например, "15 мая"). В таких случаях используйте комбинацию функций ПСТР, НАЙТИ и ДАТА:

Формула для нестандартных форматов дат

=ДАТА(

ПСТР(A1; НАЙТИ(" "; A1)+1; 4); -- год

ПОИСКПОЗ(

ЛЕВСИМВ(ПСТР(A1; 1; НАЙТИ(" "; A1)-1)); -- месяц

{"января";"февраля";...;"декабря"}; 0

);

ЛЕВСИМВ(ПСТР(A1; 1; НАЙТИ(" "; A1)-1)) -- день

)

Эта формула преобразует текст вида "15 мая 2026" в дату.

⚠️ Внимание: если после применения ДАТАЗНАЧ результат отображается как ######, расширьте столбец — это означает, что ширина ячейки недостаточна для отображения даты.

3. Функция РАЗНДАТ: расширенные возможности

Функция РАЗНДАТ (или DATEDIF в английской версии) позволяет гибко управлять подсчётом дней, месяцев или лет между датами. Её главное преимущество — возможность указать единицу измерения (дни, месяцы, годы) и метод расчёта (полные периоды или с округлением).

Синтаксис:

=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)

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

ЗначениеОписаниеПример результата
"D"Полное количество дней=РАЗНДАТ("1.01.2026"; "15.01.2026"; "D")14
"M"Полное количество месяцев=РАЗНДАТ("1.01.2026"; "1.03.2026"; "M")2
"Y"Полное количество лет=РАЗНДАТ("1.01.2020"; "1.01.2026"; "Y")4
"YM"Месяцы без учёта лет=РАЗНДАТ("1.01.2026"; "15.03.2026"; "YM")2
"MD"Дни без учёта месяцев и лет=РАЗНДАТ("1.01.2026"; "15.01.2026"; "MD")14

Особенность РАЗНДАТ: она не документирована в справочной системе Excel, но работает во всех версиях. Чтобы избежать ошибок, всегда указывайте даты как ссылки на ячейки, а не как текст:

=РАЗНДАТ(A1; B1; "D")  -- правильно

=РАЗНДАТ("1.01.2026"; "15.01.2026"; "D") -- работает, но не рекомендуется

📊 Какой метод подсчёта дней вы используете чаще?
Простое вычитание
Функция РАЗНДАТ
Функция ЧИСТРАБДНИ
Другие способы

4. Подсчёт рабочих дней: функция ЧИСТРАБДНИ

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

Синтаксис:

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

Пример: подсчитать рабочие дни между 01.06.2026 и 15.06.2026, исключая 12.06.2026 (День России):

=ЧИСТРАБДНИ("01.06.2026"; "15.06.2026"; "12.06.2026")

Для массовых расчётов удобно хранить праздники в отдельном диапазоне (например, D1:D10):

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

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

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

📅 Убедитесь, что начальная дата раньше конечной

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

🔄 Формат ячеек с датами — "Дата" (не "Текст")

📌 Диапазон праздников не содержит пустых ячеек между датами-->

⚠️ Внимание: функция ЧИСТРАБДНИ.МЕЖД (в английской версии NETWORKDAYS.INTL) позволяет настроить выходные дни. Например, для 6-дневной рабочей недели (выходной только воскресенье) используйте:
=ЧИСТРАБДНИ.МЕЖД(A1; B1; 11; D1:D10)

где 11 — код для выходного дня (воскресенье).

5. Продвинутые сценарии: бухгалтерские дни, часы, минуты

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

  • 💰 Банковские дни: используйте ЧИСТРАБДНИ с расширенным списком праздников (включая переносы выходных). Пример для России: добавьте в диапазон праздников даты из производственного календаря.
  • ⏱️ Часы между датами: умножьте разницу в днях на 24:
    =(B1-A1)*24

    Для учёта рабочих часов (например, 8 часов в день):

    =ЧИСТРАБДНИ(A1; B1)*8
  • Минуты/секунды: аналогично умножайте на 1440 (минуты в дне) или 86400 (секунды в дне).

Для точных расчётов с учётом времени (например, 15.05.2026 14:30) используйте функцию ВРЕМЗНАЧ:

=ДАТАЗНАЧ("15.05.2026")+ВРЕМЗНАЧ("14:30:00")

Критичный нюанс: при работе с временными метками Excel может округлять результаты. Чтобы избежать погрешностей, используйте формат ячейки "Общий" или "[ч]:мм:сс" для отображения полных часов (например, 25:30:00 вместо 1:30:00).

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

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

  • 📅 Несоответствие форматов: даты в формате ДД-ММ-ГГГГ (через дефис) не распознаются как даты. Решение: замените дефисы на точки или используйте ДАТАЗНАЧ.
  • 🔢 Отрицательные результаты: если конечная дата раньше начальной, используйте АБС или поменяйте ячейки местами.
  • 🌍 Региональные настройки: в американском Excel даты по умолчанию в формате ММ/ДД/ГГГГ. Если вы работаете с международными данными, используйте ДАТА для явного указания дня/месяца/года:
    =ДАТА(2026; 5; 15)  -- 15 мая 2026
  • 📊 Пустые ячейки: если в диапазоне праздников есть пустые ячейки, ЧИСТРАБДНИ вернёт ошибку. Решение: очистите диапазон или используйте ЕСЛИОШИБКА.

Проверьте себя: если ваша формула возвращает #ЗНАЧ!, скорее всего, одна из "дат" на самом деле текст. Используйте ЕТЕКСТ для диагностики:

=ЕТЕКСТ(A1)

Если результат ИСТИНА — данные в текстовом формате.

7. Автоматизация: динамические расчёты и условное форматирование

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

  1. Создайте столбец с датой дедлайна (например, C2:C100).
  2. В соседнем столбце введите формулу:
    =ЕСЛИ(C2
  3. Примените условное форматирование: Главная → Условное форматирование → Правила выделения ячеек → Текст содержит → "Просрочено" и выберите красный цвет.

Для сложных проектов с несколькими этапами используйте сводные таблицы:

  1. Создайте таблицу с колонками: Название задачи, Дата начала, Дата окончания, Статус.
  2. Добавьте вычисляемый столбец с формулой:
    =ЧИСТРАБДНИ([Дата начала]; [Дата окончания])
  3. Постройте сводную таблицу, где строки — названия задач, а значения — сумма рабочих дней.

Для визуализации используйте гистограммы с накоплением, где по оси X — задачи, а по оси Y — дни. Это поможет быстро оценить распределение времени между этапами.

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

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

Используйте функцию ТДАТА (или TODAY), которая всегда возвращает текущую дату:

=ТДАТА()-A1

Для рабочих дней:

=ЧИСТРАБДНИ(A1; ТДАТА())
Можно ли посчитать дни с учётом полурабочих дней (например, суббота — короткий день)?

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

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

Это означает, что:

  1. Ширина столбца недостаточна — расширьте его.
  2. Результат отрицательный, а формат ячейки — "Дата" (Excel не может отобразить отрицательную дату). Измените формат на "Общий".
  3. В формуле ошибка (например, текст вместо даты). Проверьте аргументы с помощью ЕТЕКСТ.
Как посчитать дни между датами в Google Таблицах?

Формулы идентичны Excel, но есть нюансы:

  • Функция ДАТАЗНАЧ называется DATEVALUE.
  • Для РАЗНДАТ используйте DATEDIF (она документирована в справочной системе Google).
  • Формат дат по умолчанию зависит от языковых настроек аккаунта.
Можно ли посчитать дни с учётом часового пояса?

Excel не поддерживает часовые пояса напрямую. Решения:

  1. Приведите все даты к одному часовому поясу перед расчётом (например, с помощью =A1 + (3/24) для добавления 3 часов).
  2. Используйте надстройки вроде Power Query для преобразования временных меток.
  3. Для критичных задач (например, в авиации или логистике) используйте специализированное ПО.