Почему расчет дней в Excel — это не так просто, как кажется
На первый взгляд, вычисление разницы между двумя датами в Microsoft Excel или Google Таблицах выглядит как элементарная задача: взял две ячейки с датами, вычел одну из другой — и готов результат. Но на практике пользователи сталкиваются с десятками нюансов: почему вместо дней программа выдает случайное число? Как исключить выходные и праздники? Можно ли посчитать только рабочие часы? И почему формула, скопированная с форума, возвращает ошибку #ЗНАЧ!?
Дело в том, что Excel оперирует датами как числовыми значениями (где 1 января 1900 года = 1, а каждая последующая дата увеличивает это число на единицу). Без понимания этой логики даже простая разница между 15.05.2026 и 20.05.2026 может превратиться в головоломку. В этой статье мы разберем 5 рабочих методов — от базовых до продвинутых, — которые покроют 99% задач по расчету дней, включая учет праздников, рабочих смен и даже временных зон.
Спойлер: если вам нужно просто узнать, сколько дней прошло между двумя датами — достаточно одной формулы. Но если требуется посчитать только рабочие дни, исключить конкретные праздники или учитывать полуторачасовые перерывы, придется погрузиться глубже. Начнем с самого простого.
Метод 1: Базовый расчет дней (простая разница)
Это основа, с которой стоит начинать. Если вам не важны выходные, праздники или рабочие часы — достаточно вычесть одну дату из другой. Excel автоматически вернет количество дней между ними.
Формула выглядит так:
=КОНДАТА - НАЧДАТА
Где КОНДАТА и НАЧДАТА — это ячейки с конечной и начальной датами соответственно. Например, если в ячейке A2 у вас 01.01.2026, а в B2 — 31.01.2026, формула будет:
=B2 - A2
- ✅ Работает для любых дат, даже если они в разных форматах (например,
01.01.2026и2026-01-31). - ✅ Возвращает целое число дней, включая выходные и праздники.
- ⚠️ Если результат отображается как дата (например,
01.01.1900), измените формат ячейки на Общий или Числовой.
⚠️ Внимание: Если одна из ячеек содержит текст (например, "1 января"), а не дату в формате Excel, формула вернет ошибку#ЗНАЧ!. Чтобы исправить это, используйте функцию=ДАТАЗНАЧ()для преобразования текста в дату.
Метод 2: Функция РАЗНДАТ — гибкость с годами, месяцами и днями
Функция =РАЗНДАТ() (или DATEDIF в английской версии) — это скрытый инструмент Excel, который не отображается в списке функций, но работает стабильно. Она позволяет вычислять разницу не только в днях, но и в месяцах или годах, что полезно для расчета стажа, возраста или сроков действия договоров.
Синтаксис:
=РАЗНДАТ(нач_дата; кон_дата; единица)
Где единица — это код возвращаемого значения:
"d"— разница в днях;"m"— разница в полных месяцах;"y"— разница в полных годах;"ym"— разница в месяцах без учета лет;"md"— разница в днях без учета месяцев и лет.
Пример: чтобы узнать, сколько полных лет и месяцев прошло с 15.03.2020 по 10.11.2026, используйте:
=РАЗНДАТ(A2; B2; "y") & " лет, " & РАЗНДАТ(A2; B2; "ym") & " месяцев"
| Единица | Пример формулы | Результат для дат 01.01.2026 и 15.03.2026 |
|---|---|---|
"d" |
=РАЗНДАТ(A2; B2; "d") |
74 |
"m" |
=РАЗНДАТ(A2; B2; "m") |
2 |
"y" |
=РАЗНДАТ(A2; B2; "y") |
0 |
"ym" |
=РАЗНДАТ(A2; B2; "ym") |
2 |
⚠️ Внимание: Функция РАЗНДАТ может давать неожиданные результаты при работе с отрицательными датами (до 1900 года). Если вам нужно считать исторические периоды, используйте альтернативные методы.
Метод 3: Расчет рабочих дней (исключаем выходные)
Если вам нужно посчитать только рабочие дни, исключив субботы и воскресенья, используйте функцию =ЧИСТРАБДНИ() (или NETWORKDAYS в английской версии). Она автоматически пропускает выходные и возвращает количество дней, которые приходятся на понедельник-пятницу.
Синтаксис:
=ЧИСТРАБДНИ(нач_дата; кон_дата; [праздники])
Необязательный аргумент [праздники] позволяет указать диапазон ячеек с датами праздников, которые тоже нужно исключить. Например, если в ячейках D2:D10 перечислены государственные праздники, формула примет вид:
=ЧИСТРАБДНИ(A2; B2; D2:D10)
- 📅 По умолчанию выходные — это суббота и воскресенье. Если у вас другой график (например, пятница и суббота), потребуется дополнительная настройка.
- 🏢 Для расчета рабочих часов (а не дней) умножьте результат на длительность рабочего дня. Например:
=ЧИСТРАБДНИ(A2; B2) * 8для 8-часового дня. - ⚠️ Если конечная дата раньше начальной, функция вернет ошибку
#ЧИСЛО!.
Убедитесь, что обе даты в формате Excel (не текст)|Проверьте, что праздники указаны как даты, а не текст|Удалите пустые ячейки в диапазоне праздников|При необходимости отсортируйте праздники по возрастанию-->
Метод 4: Учет праздников и индивидуальных выходных
Функция ЧИСТРАБДНИ отлично справляется с стандартными выходными, но что делать, если у вас нетиповой график? Например, компания работает по схеме "2 через 2", или выходные — пятница и суббота? В этом случае поможет комбинация функций =ЧИСТРАБДНИ.INTL() (или NETWORKDAYS.INTL).
Синтаксис:
=ЧИСТРАБДНИ.INTL(нач_дата; кон_дата; [выходные]; [праздники])
Аргумент [выходные] — это число или строка, определяющая, какие дни считаются выходными. Например:
1— суббота и воскресенье (по умолчанию);11— только воскресенье;"0000011"— пятница и суббота (где1= выходной,0= рабочий день).
Пример: чтобы посчитать рабочие дни для графика "пятница-суббота — выходные", используйте:
=ЧИСТРАБДНИ.INTL(A2; B2; "0000011"; D2:D10)
Если праздники в вашей стране не фиксированы (например, Пасха), их можно добавить вручную или использовать динамические формулы с =ДАТА() и =ЕСЛИ() для автоматического расчета. Например, чтобы исключить переходящие праздники, можно создать отдельную таблицу с формулами их вычисления.
Как добавить переходящие праздники (например, Пасху)
1. Создайте отдельный лист "Праздники".
2. В ячейке A1 введите формулу для расчета Пасхи (например, для 2026 года: =ДАТА(2026;4;5) — это 5 мая).
3. В основной формуле ЧИСТРАБДНИ.INTL укажите диапазон с этим листом: =ЧИСТРАБДНИ.INTL(A2; B2; 1; Праздники!A1:A10).
Метод 5: Расчет дней с учетом времени (часы и минуты)
Если вам нужно посчитать не только дни, но и часы/минуты между двумя метками времени (например, длительность проекта с точностью до часа), используйте комбинацию функций =ДАТАЗНАЧ() и арифметических операций.
Пример: в ячейке A2 у вас 01.01.2026 14:30, а в B2 — 03.01.2026 09:15. Чтобы узнать разницу в часах:
=(B2 - A2) * 24
Для минут:
=(B2 - A2) 24 60
- ⏱️ Если результат отображается как дата (например,
01.01.1900 12:00), измените формат ячейки на Общий или Числовой. - 🔄 Для расчета рабочих часов умножьте результат на долю рабочего времени. Например, если рабочий день — 8 часов:
=ЧИСТРАБДНИ(A2; B2) 8 + (МОД(B2 - A2; 1) 24 - 16) * (ЧИСТРАБДНИ(A2; B2) > 0)(где 16 — это нерабочие часы в сутках).
⚠️ Внимание: При работе с временем убедитесь, что ячейки имеют формат Дата/Время. Если Excel воспринимает время как текст, используйте =ВРЕМЗНАЧ() для преобразования.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с неожиданными ошибками при работе с датами. Вот самые распространенные проблемы и их решения:
- Ошибка
#ЗНАЧ!: возникает, если одна из ячеек содержит текст вместо даты. Используйте=ДАТАЗНАЧ()или=ЗНАЧЕН()для преобразования. - Некорректный результат (например, отрицательное число дней): проверьте порядок дат (конечная дата должна быть позже начальной).
- Формула возвращает дату 1900 года: измените формат ячейки с Дата на Общий.
- Праздники не исключаются: убедитесь, что диапазон с праздниками указан корректно и ячейки содержат даты, а не текст.
Еще одна частая ошибка — использование разных форматов дат в одной таблице. Например, если одна дата в формате ДД.ММ.ГГГГ, а другая — ММ/ДД/ГГГГ, Excel может воспринимать их как разные значения. Чтобы унифицировать формат:
- Выделите диапазон с датами.
- Нажмите
Ctrl + 1(или правая кнопка → Формат ячеек). - Выберите категорию Дата и укажите нужный формат.
FAQ: Ответы на частые вопросы
Можно ли в Excel посчитать дни между датами в разных временных зонах?
Excel не поддерживает временные зоны напрямую. Однако вы можете вручную скорректировать время, добавив или вычтя разницу в часах. Например, если одна дата в UTC+0, а другая в UTC+3, добавьте к второй дате 3/24 (3 часа в долях дня):
= (B2 + 3/24) - A2
Для автоматизации создайте отдельный столбец с корректировкой времени для каждой временной зоны.
Как посчитать количество дней между сегодняшним днем и датой в ячейке?
Используйте функцию =СЕГОДНЯ():
=A2 - СЕГОДНЯ()
Если нужно исключить выходные:
=ЧИСТРАБДНИ(СЕГОДНЯ(); A2)
Обратите внимание: функция СЕГОДНЯ() пересчитывается при каждом открытии файла, поэтому результат будет динамическим.
Почему функция РАЗНДАТ не работает в Google Таблицах?
В Google Sheets функция РАЗНДАТ называется =DATEDIF и поддерживается полностью. Синтаксис идентичен:
=DATEDIF(A2; B2; "d")
Если формула не работает, проверьте:
- Язык интерфейса (в русскоязычной версии используйте
=РАЗНДАТ). - Формат дат (должен быть Дата, а не текст).
Как посчитать количество полных недель между двумя датами?
Используйте функцию =ЦЕЛОЕ() для округления разницы в днях до полных недель:
=ЦЕЛОЕ((B2 - A2) / 7)
Если нужно учитывать только рабочие недели (5 дней), используйте:
=ЦЕЛОЕ(ЧИСТРАБДНИ(A2; B2) / 5)
Можно ли автоматически подсвечивать просроченные даты?
Да, с помощью условного форматирования:
- Выделите диапазон с датами.
- Перейдите на вкладку Главная → Условное форматирование → Создать правило.
- Выберите Использовать формулу... и введите:
=A2 < СЕГОДНЯ()
Затем укажите цвет заполнения (например, красный) и сохраните правило.