Почему Excel идеально подходит для расчёта дней между датами
Расчёт количества дней между двумя датами — одна из самых востребованных задач в Microsoft Excel. Будь то контроль сроков проектов, анализ временных интервалов или планирование событий, умение быстро вычислять разницу в днях экономит часы ручной работы. В отличие от калькуляторов или онлайн-сервисов, Excel позволяет автоматизировать процесс: достаточно один раз настроить формулу, и она будет обновляться при изменении исходных данных.
Главное преимущество Excel — гибкость. Программа не просто вычитает одну дату из другой, но и учитывает рабочие/выходные дни, праздники, а также позволяет анализировать интервалы в годах, месяцах или даже часах. Например, вы можете узнать, сколько полных недель прошло с момента запуска проекта или сколько будних дней осталось до дедлайна.
В этой статье мы разберём 5 методов — от базовых до продвинутых, — которые покроют 90% практических задач. Вы научитесь:
- 📅 Вычитать даты напрямую (самый простой способ)
- 📊 Использовать функции
ДАТАРАЗНиДНИдля точных вычислений - 🏢 Исключать выходные и праздники из расчётов
- ⏳ Преобразовывать дни в годы/месяцы/недели
- 🔄 Автоматизировать обновление дат с помощью
СЕГОДНЯ()
Метод 1: Простое вычитание дат (базовый способ)
Если вам нужно узнать, сколько дней прошло между двумя конкретными датами, самый быстрый способ — вычесть одну дату из другой. Excel автоматически распознаёт формат дат и возвращает результат в днях.
Пример формулы:
=B2-A2
где A2 — ячейка с начальной датой, а B2 — с конечной. Результат будет целым числом (например, 45 означает 45 дней).
Важно: Excel хранит даты как последовательные числа, где 1 соответствует 1 января 1900 года. Поэтому вычитание работает даже с датами в текстовом формате (если они распознаны как даты).
| Начальная дата (A2) | Конечная дата (B2) | Формула | Результат |
|---|---|---|---|
| 15.05.2026 | 20.05.2026 | =B2-A2 |
5 |
| 01.01.2026 | 01.02.2026 | =B2-A2 |
31 |
| 10.12.2023 | 10.01.2026 | =B2-A2 |
31 |
⚠️ Внимание: Если результат отображается как дата (например, "05.01.1900"), а не число, измените формат ячейки на Общий или Числовой. Для этого выделите ячейку с результатом и нажмите Ctrl + 1, затем выберите формат.
Метод 2: Функция ДНИ — альтернатива вычитанию
Функция ДНИ (англ. DAYS) специально предназначена для расчёта разницы между двумя датами. Её синтаксис прост:
=ДНИ(конечная_дата; начальная_дата)
или на английском:
=DAYS(end_date, start_date)
Преимущество этой функции в том, что она явно указывает намерение — код становится более читаемым. Например, формула =ДНИ(СЕГОДНЯ(); A2) сразу понятна: она считает дни с даты в ячейке A2 до сегодняшнего дня.
- 📌 Подходит для динамических расчётов (например, "дней до дедлайна")
- 🔍 Меньше ошибок, чем при ручном вычитании
- 🌍 Работает одинаково во всех локализациях Excel
Пример использования с функцией СЕГОДНЯ():
=ДНИ(СЕГОДНЯ(); "15.03.2026")
Эта формула вернёт количество дней, прошедших с 15 марта 2026 года до текущей даты. Обратите внимание: если текущая дата раньше 15.03.2026, результат будет отрицательным.
Что делать, если функция ДНИ не работает?
Если Excel выдаёт ошибку #ИМЯ?, проверьте:
1. Правильность написания функции (в русскоязычной версии — ДНИ, в английской — DAYS).
2. Формат ячеек с датами (должен быть Дата, а не Текст).
3. Наличие надстройки Пакет анализа (не требуется для этой функции, но иногда влияет на другие функции дат).
Метод 3: Учёт только рабочих дней (исключаем выходные)
Если вам нужно посчитать только будние дни (понедельник–пятница), используйте функцию ЧИСТРАБДНИ (англ. NETWORKDAYS). Она автоматически исключает субботу и воскресенье.
Синтаксис:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Необязательный параметр [праздники] позволяет указать диапазон ячеек с датами праздников, которые также нужно исключить.
Пример: подсчёт рабочих дней между 1 и 31 мая 2026 года (без учёта праздников):
=ЧИСТРАБДНИ("01.05.2026"; "31.05.2026")
Результат: 23 дня (31 день в мае минус 8 выходных).
| Период | Формула | Результат (рабочие дни) |
|---|---|---|
| 01.05.2026 – 10.05.2026 | =ЧИСТРАБДНИ("01.05.2026"; "10.05.2026") |
8 |
| 01.01.2026 – 31.01.2026 | =ЧИСТРАБДНИ("01.01.2026"; "31.01.2026") |
23 |
| 01.05.2026 – 31.05.2026 (с 9 мая) | =ЧИСТРАБДНИ("01.05.2026"; "31.05.2026"; D2:D3) |
22 |
Чтобы добавить праздники, создайте список дат в отдельном диапазоне (например, D2:D10) и укажите его третьим аргументом. Например, для мая 2026 года в России это будет 1 мая (праздник) и 9 мая (выходной).
⚠️ Внимание: ФункцияЧИСТРАБДНИсчитает полные рабочие дни. Если начальная или конечная дата попадает на выходной, она не учитывается. Например, разница между субботой и понедельником будет1(только понедельник).
Создать список праздников в отдельном диапазоне|Проверить формат дат (не текст!)|Указать правильный порядок дат (нач. → кон.)|Использовать абсолютные ссылки для праздников (например, $D$2:$D$10)
-->
Метод 4: Разбивка на годы, месяцы и дни
Иногда недостаточно знать только количество дней — нужна детализация по годам, месяцам и дням. Для этого используйте функцию ДАТАРАЗН (англ. DATEDIF). Несмотря на то что она не документирована в официальной справке Excel, она работает во всех версиях программы.
Синтаксис:
=ДАТАРАЗН(начальная_дата; конечная_дата; "код_формата")
Где код_формата может принимать значения:
"y"— полные годы"m"— полные месяцы"d"— оставшиеся дни"ym"— месяцы без учёта лет"md"— дни без учёта месяцев и лет
Пример: расчёт интервала между 15.02.2020 и 20.05.2026:
=ДАТАРАЗН("15.02.2020"; "20.05.2026"; "y") → 4 (года)
=ДАТАРАЗН("15.02.2020"; "20.05.2026"; "ym") → 3 (месяца)
=ДАТАРАЗН("15.02.2020"; "20.05.2026"; "md") → 5 (дней)
Функция ДАТАРАЗН учитывает только полные интервалы. Например, если разница между датами — 1 год и 1 день, то ДАТАРАЗН(..."y") вернёт 1, а не 2.
=ДАТАРАЗН(А2;В2;"y") & " лет, " & ДАТАРАЗН(А2;В2;"ym") & " мес., " & ДАТАРАЗН(А2;В2;"md") & " дн."
-->
Метод 5: Автоматическое обновление с функцией СЕГОДНЯ()
Если вам нужно отслеживать, сколько дней прошло с фиксированной даты до сегодняшнего дня, используйте волшебную функцию СЕГОДНЯ() (англ. TODAY()). Она возвращает текущую дату и обновляется при каждом открытии файла.
Примеры применения:
- 📅
=СЕГОДНЯ()-A2— дни с даты в ячейкеA2 - 📊
=ДНИ(СЕГОДНЯ(); "01.01.2026")— дни с начала 2026 года - ⏳
=ЧИСТРАБДНИ(A2; СЕГОДНЯ())— рабочие дни с даты вA2
Важно: СЕГОДНЯ() — летучая функция. Это значит, что она пересчитывается при:
- Открытии файла
- Изменении любой ячейки
- Ручном пересчёте (
F9)
⚠️ Внимание: Если вы сохраните файл с функциейСЕГОДНЯ()и откроете его через год, она покажет актуальную дату на момент открытия, а не дату сохранения. Чтобы зафиксировать текущую дату, заменитеСЕГОДНЯ()на статическое значение (Ctrl + C → Правка → Специальная вставка → Значения).
Пример динамического отчёта:
| A | B | C |
|---------------------|---------------------|---------------------|
| Дата начала проекта| 01.03.2026 | |
| Сегодня |=СЕГОДНЯ() | |
| Дней прошло |=B2-A2 | |
| Рабочих дней |=ЧИСТРАБДНИ(A2;B2) | |
Типичные ошибки и как их избежать
Даже в простых расчётах с датами пользователи часто сталкиваются с ошибками. Вот самые распространённые:
- Текст вместо даты: Excel не распознаёт "01.01.2026" как дату, если ячейка отформатирована как текст. Решение: измените формат на Дата или используйте
ДАТАЗНАЧ(): - Отрицательный результат: если конечная дата раньше начальной, формула вернёт отрицательное число. Решение: используйте
АБС(): - Неучтённые високосные годы: функции Excel корректно обрабатывают 29 февраля, но если вы вручную вычитаете дни, могут возникнуть ошибки. Решение: всегда используйте встроенные функции (
ДНИ,ДАТАРАЗН).
=ДАТАЗНАЧ("01.01.2026")
=АБС(B2-A2)
Ещё одна частая проблема — разные форматы дат в одном файле. Например, одна дата в формате "дд.мм.гггг", а другая — "мм/дд/гггг". Чтобы унифицировать формат:
- Выделите проблемные ячейки.
- Нажмите
Ctrl + 1(Формат ячеек). - Выберите категорию Дата и укажите нужный тип (например, "14.03.2012").
FAQ: Ответы на частые вопросы
Можно ли посчитать дни между датой и временем (например, 10.05.2026 14:30)?
Да, Excel поддерживает расчёт интервалов с учётом времени. Используйте ту же формулу вычитания, но результат будет в дробном формате (например, 5,6 означает 5 дней и 14.4 часа). Чтобы разделить дни и часы:
- Дни:
=ЦЕЛОЕ(B2-A2) - Часы:
=(B2-A2)-ЦЕЛОЕ(B2-A2)(затем умножьте на 24)
Как посчитать дни до конкретной даты в будущем?
Используйте формулу:
=ДАТА(год;месяц;день)-СЕГОДНЯ()
Пример для 31 декабря 2026 года:
=ДАТА(2026;12;31)-СЕГОДНЯ()
Если результат отрицательный, дата уже прошла.
Почему функция ДАТАРАЗН возвращает ошибку #ЧИСЛО!?
Ошибка возникает, если:
- Начальная дата позже конечной (используйте
АБСили поменяйте местами). - Один из аргументов не является датой (проверьте формат ячеек).
- Используется неверный код формата (например,
"x"вместо"y").
Как посчитать дни между датами в Google Таблицах?
В Google Sheets используются те же принципы, но некоторые функции имеют другие названия:
=DAYS(B2; A2)вместоДНИ=NETWORKDAYS(A2; B2)вместоЧИСТРАБДНИ=TODAY()вместоСЕГОДНЯ()
Функция DATEDIF работает без изменений.
Можно ли автоматически подсвечивать просроченные даты?
Да, с помощью условного форматирования:
- Выделите диапазон с датами.
- Перейдите на вкладку
Главная → Условное форматирование → Создать правило. - Выберите
Использовать формулу...и введите: - Укажите цвет заполнения (например, красный) и нажмите
ОК.
=A1<СЕГОДНЯ()
Теперь все даты раньше сегодняшней будут подсвечены.