Расчёт количества дней между произвольной датой и текущим днём — одна из самых востребованных задач в Microsoft Excel и Google Таблицах. Эта функция полезна для контроля сроков выполнения задач, анализа просроченных платежей, планирования проектов или даже личных целей (например, сколько дней осталось до важного события). Однако многие пользователи сталкиваются с ошибками: формулы возвращают некорректные значения, не обновляются автоматически или учитывают выходные неправильно.
В этой статье мы разберём 5 проверенных способов подсчёта дней от любой даты до сегодняшнего дня — от простейших формул до продвинутых решений с учётом рабочих дней, часов и даже минут. Вы узнаете, как избежать типичных ошибок (например, когда Excel показывает отрицательное число дней), как автоматизировать обновление результатов и как визуализировать данные с помощью условного форматирования. А в конце — бонус: готовая таблица с формулами для копирования!
1. Базовый способ: функция СЕГОДНЯ() и вычитание дат
Самый простой и универсальный метод — вычесть исходную дату из текущей. Для этого в Excel есть встроенная функция СЕГОДНЯ() (или TODAY() в английской версии), которая всегда возвращает актуальную дату. Формула выглядит так:
=СЕГОДНЯ()-A2
Где A2 — ячейка с вашей датой. Например, если в A2 записано 15.05.2026, а сегодня 20.05.2026, формула вернёт 5.
- ✅ Плюсы: работает во всех версиях Excel, не требует дополнительных настроек.
- ⚠️ Минусы: если исходная дата позже сегодняшней, результат будет отрицательным (например,
-5для даты25.05.2026). - 🔄 Автообновление: функция
СЕГОДНЯ()пересчитывается при каждом открытии файла или изменении данных.
⚠️ Внимание: Если вы скопируете ячейку с формулойСЕГОДНЯ()в другой файл, она может обнулиться или показать неверную дату. Чтобы избежать этого, используйте специальную вставку (правый клик →Специальная вставка → Формулы).
Чтобы отрицательные значения не портили отчёт, оберните формулу в АБС() (абсолютное значение):
=АБС(СЕГОДНЯ()-A2)
2. Учёт только рабочих дней: функция ЧИСТРАБДНИ()
Если вам нужно посчитать только рабочие дни (исключая субботу, воскресенье и праздники), используйте функцию ЧИСТРАБДНИ() (или NETWORKDAYS()). Она принимает три аргумента:
=ЧИСТРАБДНИ(A2; СЕГОДНЯ(); [праздники])
Где:
A2— ячейка с исходной датой;СЕГОДНЯ()— текущая дата;[праздники]— необязательный диапазон с датами праздников (например,D2:D10).
Пример: если сегодня 20.05.2026 (понедельник), а в A2 записано 10.05.2026 (пятница), формула вернёт 6 (с учётом выходных 11–12 мая).
| Формула | Пример данных | Результат | Пояснение |
|---|---|---|---|
=ЧИСТРАБДНИ(A2; СЕГОДНЯ()) | Исходная дата: 10.05.2026Сегодня: 20.05.2026 | 8 | Учитывает только будни (10, 13–17, 20 мая) |
=ЧИСТРАБДНИ(A2; СЕГОДНЯ(); D2:D3) | Исходная дата: 10.05.2026Сегодня: 20.05.2026Праздники: 12.05.2026, 15.05.2026 | 6 | Исключены выходные + 2 праздничных дня |
⚠️ Внимание: ФункцияЧИСТРАБДНИ()считает полные рабочие дни. Если сегодня понедельник, а исходная дата — прошлый четверг, результат будет1(только пятница), даже если прошло 4 календарных дня.
Создать столбец с датами праздников|Проверить формат ячеек (должен быть "Дата")|Использовать абсолютные ссылки для диапазона праздников (например, $D$2:$D$10)|Применить условное форматирование для выделения просроченных задач-->
3. Расчёт дней с учётом времени: РАЗНДАТ() и СЕЙЧАС()
Если вам нужно посчитать не только дни, но и часы, минуты или секунды, используйте комбинацию функций РАЗНДАТ() (или DATEDIF) и СЕЙЧАС() (возвращает текущие дату и время). Например, чтобы узнать, сколько полных дней и часов прошло с заданной даты:
=РАЗНДАТ(A2; СЕЙЧАС(); "d") & " дней, " & ТЕКСТ(СЕЙЧАС()-A2; "ч") & " часов"
Где:
"d"— код для вывода дней;ТЕКСТ(..., "ч")— извлекает часы из разницы;&— оператор конкатенации (объединения текста).
Пример результата: 5 дней, 3 часов.
Для более точного расчёта (включая минуты) используйте:
=РАЗНДАТ(A2; СЕЙЧАС(); "d") & "д " & ЧАС(СЕЙЧАС()-A2) & "ч " & МИНУТЫ(СЕЙЧАС()-A2) & "м"
⚠️ Внимание: ФункцияРАЗНДАТ()не документирована в Excel, но работает во всех версиях. В Google Таблицах её нет — используйте альтернативу:=DATEDIF(A2; TODAY(); "d").
Почему РАЗНДАТ() не показана в справочнике Excel?
Функция РАЗНДАТ() — реликт из Lotus 1-2-3, поддерживаемый для совместимости. Microsoft не рекомендует её использовать в новых проектах, но она остаётся самой удобной для расчёта разницы между датами. В будущих версиях Excel её могут убрать, поэтому для критичных задач дублируйте логику через ГОД(), МЕСЯЦ() и ДЕНЬ().
4. Динамическое обновление: как заставить формулы пересчитываться автоматически
По умолчанию Excel обновляет функции СЕГОДНЯ() и СЕЙЧАС() только при открытии файла или изменении данных. Если вам нужно, чтобы значения пересчитывались каждую минуту (например, для таймера обратного отсчёта), выполните следующие шаги:
- Перейдите в
Файл → Параметры → Формулы. - В разделе
Параметры вычисленийвыберитеАвтоматически, кроме таблиц данных. - Установите флажок
Пересчитывать книгу при сохранении. - Для принудительного обновления нажмите
F9.
Для Google Таблиц автоматический пересчёт включён по умолчанию, но можно ускорить его с помощью скрипта:
function onEdit() {
SpreadsheetApp.flush(); // Принудительный пересчёт формул
}
Добавьте этот код в Расширения → Apps Script.
5. Визуализация результатов: условное форматирование
Чтобы быстро видеть просроченные задачи или приближающиеся дедлайны, настройте условное форматирование:
- Выделите ячейки с результатами (например, столбец с количеством дней).
- Перейдите в
Главная → Условное форматирование → Создать правило. - Выберите
Форматировать только ячейки, которые содержат. - Установите условие:
Значение меньше 0(для просроченных задач) илиЗначение меньше 3(для срочных). - Задайте цвет заполнения (например, красный для просрочки, жёлтый для предупреждения).
Пример правил:
- 🔴 Красный:
значение < 0(просрочено); - 🟡 Жёлтый:
значение < 3(осталось менее 3 дней); - 🟢 Зелёный:
значение >= 7(в запасе неделя).
Условное форматирование работает только для ячеек с числовыми значениями. Если ваша формула возвращает текст (например, через &), создайте отдельный столбец с числовыми данными для правил.
6. Распространённые ошибки и как их исправить
Даже в простых формулах пользователи часто сталкиваются с ошибками. Вот самые частые из них и способы решения:
| Ошибка | Причина | Решение |
|---|---|---|
###### | Ячейка слишком узкая для отображения даты/времени. | Расширьте столбец или измените формат на Общий. |
#ЗНАЧ! | Некорректный формат ячейки (текст вместо даты). | Проверьте формат (Формат ячеек → Дата) или используйте ДАТАЗНАЧ() для преобразования текста в дату. |
| Отрицательное число дней | Исходная дата позже текущей. | Используйте АБС() или поменяйте местами даты в формуле. |
| Формула не обновляется | Отключён автоматический пересчёт. | Включите в Формулы → Параметры вычислений → Автоматически. |
#ИМЯ? | Опечатка в названии функции (например, СЕГОДНЯ вместо СЕГОДНЯ()). | Проверьте синтаксис и скобки. |
Если ваша формула возвращает неожиданный результат, проверьте:
- 📅 Формат ячеек: обе даты должны быть в формате
Дата, а неТекст. - 🔢 Региональные настройки: в некоторых версиях Excel разделителем является
;, а не,(например,=СЕГОДНЯ();A2). - 🔄 Время на компьютере: функция
СЕГОДНЯ()берёт дату из системных настроек. Если они сбиты, результат будет неверным.
FAQ: Ответы на частые вопросы
Можно ли посчитать дни между датами в Google Таблицах?
Да, все приведённые формулы работают и в Google Таблицах, за исключением РАЗНДАТ(). Вместо неё используйте:
=DATEDIF(A2; TODAY(); "d")
Для рабочих дней — =NETWORKDAYS(A2; TODAY()).
Как посчитать дни с учётом только рабочих часов (например, 8 часов в день)?
Используйте комбинацию функций:
=ЧИСТРАБДНИ(A2; СЕГОДНЯ())*8 - (МОД(СЕЙЧАС()-A2; 1)*24 - 8)
Эта формула:
- Считает количество рабочих дней (
ЧИСТРАБДНИ); - Умножает на 8 часов;
- Вычитает лишние часы, если текущее время вне рабочего дня (с 9:00 до 18:00).
Почему моя формула показывает 1900 год вместо правильной даты?
Это происходит, если Excel интерпретирует ваше число как количество дней с 01.01.1900 (внутренний формат хранения дат). Чтобы исправить:
- Проверьте, что в ячейке действительно дата, а не текст (например,
15-05-2026вместо15.05.2026). - Примените формат
Датак ячейке. - Если дата хранится как текст, используйте
=ДАТАЗНАЧ(PODSTAVIT(A2; "-"; ".")).
Как сделать так, чтобы дата не обновлялась при открытии файла?
Если вам нужна фиксированная дата (например, дата создания отчёта), замените СЕГОДНЯ() на:
- Нажмите
Ctrl+;(это вставит текущую дату как статическое значение). - Или используйте
=ТЕКСТ(СЕГОДНЯ(); "дд.мм.гггг"), затем скопируйте результат и вставьте какЗначение.
После этого формула перестанет обновляться.
Можно ли посчитать дни с учётом конкретных рабочих дней (например, если у нас рабочая суббота)?
Да, но стандартная функция ЧИСТРАБДНИ() этого не умеет. Используйте альтернативу:
- Создайте столбец с номерами дней недели для каждой даты:
=ДЕНЬНЕД(A2)(1=воскресенье, 2=понедельник,...). - Отфильтруйте даты, которые попадают в ваши рабочие дни (например,
=ИЛИ(ДЕНЬНЕД(A2)=2; ДЕНЬНЕД(A2)=3; ...)). - Посчитайте количество отфильтрованных дат с помощью
СЧЁТЕСЛИ().
Или используйте Power Query для сложных расчётов.