Работа с датами в Microsoft Excel — одна из самых востребованных задач, особенно когда нужно рассчитать продолжительность проектов, сроки выполнения задач или разницу между событиями. Но стандартные функции часто исключают конечную дату из подсчёта, что приводит к ошибкам в отчётах. Например, если проект стартовал 1 января и закончился 3 января, логично ожидать, что его длительность — 3 дня, а не 2.
В этой статье вы узнаете, как правильно вычислить количество дней между двумя датами включая обе границы, избегая типичных ошибок. Мы разберём базовые формулы, продвинутые функции для учёта выходных, а также нюансы работы с временными зонами и некорректными данными. Особое внимание уделим случаям, когда Excel возвращает неожиданные результаты — например, отрицательные числа или ошибку #ЗНАЧ!.
———
Почему стандартная разница дат в Excel не включает конечную дату
По умолчанию Excel воспринимает даты как последовательные числа, где 1 января 1900 года — это число 1, а каждая последующая дата увеличивает счётчик на единицу. Когда вы вычитаете одну дату из другой (например, =B2-A2), программа просто считает разницу между этими числами.
Проблема в том, что такая операция возвращает количество полных дней между датами, исключая конечную. Например:
- 📅
=ДАТА(2026;1;3) - ДАТА(2026;1;1)вернёт2(1 и 2 января), хотя логически период включает три дня: 1, 2 и 3 января. - 🔄 Если поменять даты местами (
=ДАТА(2026;1;1) - ДАТА(2026;1;3)), результат станет отрицательным (-2), что тоже не всегда удобно для анализа.
Это поведение заложено в архитектуру Excel, но его легко обойти с помощью простых корректировок формул. Главное — понимать, что включение конечной даты требует прибавления единицы к результату.
Способ 1: Простая формула с прибавлением +1
Самый быстрый метод — использовать стандартное вычитание дат и вручную добавить единицу. Формула будет выглядеть так:
=КОНДАТА - НАЧДАТА + 1
Где:
- 📌
КОНДАТА— ячейка с конечной датой (например,B2). - 📌
НАЧДАТА— ячейка с начальной датой (например,A2).
Пример: если в A2 указана дата 05.05.2026, а в B2 — 07.05.2026, формула =B2-A2+1 вернёт 3 (5, 6 и 7 мая).
Способ 2: Функция ДНИ (DAYS) с корректировкой
Excel предлагает специальную функцию ДНИ (англ. DAYS), которая возвращает разницу между двумя датами. Однако, как и в случае с вычитанием, она не включает конечную дату. Чтобы это исправить, добавьте единицу к результату:
=ДНИ(КОНДАТА; НАЧДАТА) + 1
Синтаксис функции:
- 🔹
ДНИ(конечная_дата; начальная_дата)— порядок аргументов важен! - 🔹 Если поменять даты местами, результат станет отрицательным.
Пример: =ДНИ("10.06.2026"; "05.06.2026") + 1 вернёт 6 (с 5 по 10 июня включительно).
Убедитесь, что ячейки с датами отформатированы как Дата|Проверьте порядок аргументов в функции ДНИ|Добавьте +1 для включения конечной даты|Протестируйте формулу на примере с известным результатом
-->
Способ 3: Функция ДНИ360 для финансовых расчётов
Если вы работаете с финансовыми отчётами, где год условно считается за 360 дней (12 месяцев по 30 дней), используйте функцию ДНИ360. Она игнорирует реальное количество дней в месяце и упрощает расчёты процентов или амортизации.
Синтаксис:
=ДНИ360(НАЧДАТА; КОНДАТА; [метод])
Аргументы:
- 📊
НАЧДАТАиКОНДАТА— начальная и конечная даты. - 📊
[метод](необязательно): - 🔢
ЛОЖЬили0— европейский метод (начинает с 31-го числа). - 🔢
ИСТИНАили1— американский метод (начинает с 30-го числа).
Чтобы включить конечную дату, добавьте единицу:
=ДНИ360(A2; B2) + 1
⚠️ Внимание:ДНИ360не учитывает выходные и праздники. Для точных календарных расчётов используйтеДНИилиЧИСТРАБДНИ.
| Функция | Формула с включением конечной даты | Пример результата (01.01.2026 – 03.01.2026) |
Особенности |
|---|---|---|---|
| Вычитание | =B2-A2+1 |
3 |
Простота, работает во всех версиях Excel |
ДНИ |
=ДНИ(B2; A2)+1 |
3 |
Точность, учитывает високосные годы |
ДНИ360 |
=ДНИ360(A2; B2)+1 |
3 |
Для финансовых расчётов, игнорирует реальные дни в месяце |
РАЗНДАТ |
=РАЗНДАТ(A2; B2; "d")+1 |
3 |
Универсальна, поддерживает годы/месяцы |
Учёт выходных и праздников: функция ЧИСТРАБДНИ
Если вам нужно посчитать только рабочие дни (исключая субботы, воскресенья и праздники), используйте функцию ЧИСТРАБДНИ (англ. NETWORKDAYS). Она автоматически исключает выходные, а также позволяет добавить список праздничных дней.
Синтаксис:
=ЧИСТРАБДНИ(НАЧДАТА; КОНДАТА; [праздники]) + 1
Пример:
- 🏢 В ячейках
A2иB2даты01.01.2026и10.01.2026. - 🎉 В диапазоне
D2:D5перечислены праздники:01.01.2026,02.01.2026,07.01.2026.
Формула:
=ЧИСТРАБДНИ(A2; B2; D2:D5) + 1
Результат: 6 (рабочие дни с 1 по 10 января включительно, за вычетом выходных и праздников).
⚠️ Внимание: Если конечная дата попадает на выходной или праздник, она всё равно будет учтена в результате благодаря+1. Чтобы исключить её, используйте=ЧИСТРАБДНИ(A2; B2-1; D2:D5) + 1.
Как добавить праздники в Excel автоматически?
Создайте отдельный лист с названием "Праздники" и перечислите даты в столбце A. Затем в основной формуле ссылайтесь на этот диапазон, например: =ЧИСТРАБДНИ(A2; B2; Праздники!A:A) + 1. Так вы сможете легко обновлять список праздников без изменения формул.
Ошибки и их решения: почему Excel показывает неверный результат
Даже с правильными формулами Excel может выдавать ошибки. Рассмотрим типичные проблемы и способы их исправления:
- 🚨 Ошибка
#ЗНАЧ!— возникает, если одна из ячеек содержит текст вместо даты. Проверьте формат ячеек (Формат → Ячейки → Дата). - 🔙 Отрицательное число — означает, что начальная дата позже конечной. Используйте
=АБС(ДНИ(B2; A2)) + 1, чтобы всегда получать положительный результат. - ⏳ Неправильное количество дней — убедитесь, что в настройках Excel используется 1900-дата система (проверьте в
Файл → Параметры → Дополнительно → При переходе на эту книгу → Использовать систему дат 1904— галочка должна быть снята).
Если даты вводятся вручную, используйте функцию ДАТА для избежания двусмысленности:
=ДНИ(ДАТА(2026; 12; 31); ДАТА(2026; 1; 1)) + 1
Это гарантирует, что Excel правильно интерпретирует месяцы и дни, особенно в формате дд.мм.гггг.
Продвинутые приёмы: расчёт дней с учётом времени
Если ваши данные включают не только даты, но и время (например, 01.01.2026 14:30), стандартные функции могут давать дробные результаты. Чтобы округлить их до полных дней, используйте:
=ОКРУГЛВВЕРХ(КОНДАТА - НАЧДАТА; 0) + 1
Эта формула:
- ⏰ Учитывает часы и минуты, округляя разницу до ближайшего целого дня.
- 📅 Добавляет единицу для включения конечной даты.
Пример: если проект начался 01.01.2026 09:00 и закончился 02.01.2026 18:00, формула вернёт 2 (а не 1.375, как при простом вычитании).
Для учёта только календарных дней (игнорируя время) используйте:
=ЦЕЛОЕ(КОНДАТА) - ЦЕЛОЕ(НАЧДАТА) + 1
FAQ: Частые вопросы о подсчёте дней в Excel
🔹 Как посчитать дни между датами, исключая начальную дату, но включая конечную?
Используйте формулу =КОНДАТА - НАЧДАТА (без +1). Она вернёт разницу между датами, где конечная дата включена, а начальная — нет. Например, для периода с 1 по 3 января результат будет 2 (2 и 3 января).
🔹 Почему моя формула возвращает ###### вместо числа?
Это означает, что столбец слишком узкий для отображения результата. Расширьте столбец или измените формат ячейки на Общий. Также проверьте, не является ли результат отрицательным числом с большим количеством знаков.
🔹 Можно ли посчитать количество месяцев или лет между датами?
Да, используйте функцию РАЗНДАТ:
- 📆
=РАЗНДАТ(A2; B2; "m")— количество полных месяцев. - 📅
=РАЗНДАТ(A2; B2; "y")— количество полных лет.
Чтобы включить текущий месяц/год, добавьте единицу: =РАЗНДАТ(A2; B2; "m") + 1.
🔹 Как посчитать дни между сегодняшней датой и другой датой?
Используйте функцию СЕГОДНЯ:
=ДНИ(СЕГОДНЯ(); B2) + 1
Эта формула вернёт количество дней от текущей даты до даты в ячейке B2, включая конечную дату. Для обратного отсчёта (от B2 до сегодня) поменяйте аргументы местами.
🔹 Почему функция ДНИ360 даёт другой результат, чем простое вычитание?
Функция ДНИ360 использует упрощённую модель, где каждый месяц считается за 30 дней, а год — за 360. Это не соответствует реальному календарю, но удобно для финансовых расчётов. Например, разница между 31 января и 1 февраля по ДНИ360 будет 1 день, а по календарю — 0 (если не добавлять +1).