Как вычислить количество дней между датами в Excel: полное руководство с примерами

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

В этой статье мы разберём все возможные способы вычисления дней между датами — от базовых формул до продвинутых функций с учётом рабочих дней, праздников и даже времени. Вы узнаете, как избежать типичных ошибок и автоматизировать расчёты так, чтобы Excel работал на вас, а не создавал дополнительные проблемы.

Особое внимание мы уделим скрытым нюансам: почему иногда Excel показывает неверный результат, как правильно обрабатывать даты в текстовом формате и что делать, если ваши данные содержат не только даты, но и время. Готовы разобраться раз и навсегда? Тогда приступим!

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

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

Допустим, у вас в ячейке A1 указана дата начала проекта — 15.05.2026, а в B1 — дата завершения — 30.06.2026. Чтобы узнать количество дней между ними, достаточно ввести формулу:

=B1-A1

Результат — 46 дней.

Но здесь есть подводный камень: если ячейки с датами отформатированы как текст (например, после импорта из другой программы), Excel не сможет выполнить вычитание. Чтобы проверить формат, выделите ячейку и посмотрите на панель инструментов в разделе Главная → Формат. Если там указан Текст, исправьте на Дата.

Ещё одна типичная ошибка — неучтённый порядок дат. Если вы перепутаете местами начальную и конечную дату, Excel вернёт отрицательное число. Чтобы избежать этого, используйте функцию =АБС (абсолютное значение):

=АБС(B1-A1)

2. Функция ДНИ: когда нужна точность

Для более надёжных расчётов в Excel предусмотрена специализированная функция =ДНИ. Её синтаксис прост:

=ДНИ(конечная_дата; начальная_дата)

Например, =ДНИ("30.06.2026";"15.05.2026") также вернёт 46.

Преимущество этого метода в том, что функция ДНИ автоматически игнорирует формат ячеек и всегда возвращает целое число дней. Это особенно полезно, если ваши данные поступают из внешних источников (например, баз данных или CSV-файлов), где формат дат может быть нестандартным.

Однако у ДНИ есть ограничение: она не учитывает время. Если в ваших ячейках указаны не только даты, но и часы (например, 15.05.2026 14:30), функция просто проигнорирует временную часть. Чтобы получить разницу с учётом времени, используйте формулу:

= (B1-A1)*24

где результат будет в часах.

Что делать, если Excel показывает дату как число?

Если вместо привычной даты вы видите число вроде 45341, это означает, что ячейка отформатирована как Общий формат. Чтобы исправить, выделите ячейку, нажмите Ctrl+1, выберите формат Дата и укажите нужный стиль отображения (например, 14.03.2001).

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

В реальной работе часто требуется узнать не общую разницу в днях, а именно количество рабочих дней, исключая выходные и праздники. Для этого в Excel есть функция =ЧИСТРАБДНИ:

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

По умолчанию функция считает субботу и воскресенье выходными. Но вы можете указать дополнительные праздничные дни в третьем аргументе. Например, если в диапазоне D1:D5 перечислены даты государственных праздников, формула примет вид:

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

Важно: даты праздников должны быть введены как ссылки на ячейки или как массив констант (например, {"01.01.2026";"07.01.2026"}). Если вы укажете их как текст, Excel выдаст ошибку #ЗНАЧ!.

⚠️ Внимание: Функция ЧИСТРАБДНИ доступна только в Excel 2007 и новее. В старых версиях используйте комбинацию функций ДНИ и ЦЕЛОЕ с ручным вычитанием выходных.

Для более гибкой настройки выходных (например, если у вас пятидневка с пятницей и субботой как выходными) используйте функцию =ЧИСТРАБДНИ.МЕЖД. Она позволяет задать собственные параметры выходных дней через числовой код:

=ЧИСТРАБДНИ.МЕЖД(A1; B1; 11; D1:D5)

где 11 обозначает выходные в пятницу и субботу.

4. Учёт времени: когда дни не равны 24 часам

Если ваши данные содержат не только даты, но и время (например, 15.05.2026 09:00 и 16.05.2026 17:30), простое вычитание даст результат в дробном формате, где целая часть — это дни, а дробная — доля дня. Чтобы преобразовать это в часы или минуты, используйте:

  • 🕒 Часы: =(B1-A1)*24
  • ⏱️ Минуты: =(B1-A1)*24*60
  • ⏲️ Секунды: =(B1-A1)*24*60*60

Например, разница между 15.05.2026 09:00 и 16.05.2026 17:30 составит 1,354166667 дня. Умножив на 24, получим 32,5 часа.

Для удобства отображения используйте пользовательский формат ячеек:

  1. Выделите ячейку с результатом.
  2. Нажмите Ctrl+1 и выберите вкладку Число.
  3. В поле Тип введите [ч]:мм:сс для отображения времени в формате часов, минут и секунд.
⚠️ Внимание: Если вы работаете с временными метками из разных часовых поясов, предварительно приведите их к единому стандарту (например, UTC), иначе расчёты будут неточными.
📊 Как часто вам приходится считать дни между датами в Excel?
Ежедневно
Несколько раз в неделю
Рядом
Очень редко

5. Продвинутые сценарии: возраст, просрочки, динамические даты

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

1. Расчёт возраста (количество полных лет между датой рождения и сегодняшним днём):

=ЦЕЛОЕ((СЕГОДНЯ-A1)/365,25)

где A1 — ячейка с датой рождения. Коэффициент 365,25 учитывает високосные годы.

2. Определение просрочки (сколько дней прошло с дедлайна):

=ЕСЛИ(СЕГОДНЯ>B1; СЕГОДНЯ-B1; 0)

где B1 — дата дедлайна. Если срок ещё не наступил, функция вернёт 0.

3. Динамический диапазон дат (например,"последние 30 дней"):

=СЕГОДНЯ-30

Эта формула всегда будет возвращать дату, которая была ровно 30 дней назад от текущего дня.

Для визуализации просрочек используйте условное форматирование:

  • 🔴 Выделите ячейки с датами.
  • Перейдите в Главная → Условное форматирование → Правила выделения ячеек → Меньше.
  • Укажите формулу =СЕГОДНЯ и выберите красный цвет для просроченных дат.

Ячейки с датами имеют формат"Дата", а не"Текст"|Учтёны все праздничные дни (если используете ЧИСТРАБДНИ)|Порядок дат в формуле правильный (конечная_дата - начальная_дата)|При работе с временем использован формат [ч]:мм:сс|-->

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

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

Ошибка Причина Решение
Результат в виде даты (например, 01.01.1900) Ячейка с результатом отформатирована как Дата Измените формат на Общий или Числовой
Ошибка #ЗНАЧ! Одна из ячеек содержит текст вместо даты Используйте =ДАТАЗНАЧ или проверьте формат ячеек
Неверное количество рабочих дней Не указаны праздники в ЧИСТРАБДНИ Добавьте диапазон с праздничными датами в третий аргумент
Отрицательное число дней Перепутан порядок дат (начальная > конечная) Используйте =АБС или поменяйте местами ячейки
Результат в виде времени (например, 12:00:00) Формула вернула дробное число дней Умножьте на 24 и отформатируйте как [ч]:мм

Критическая ошибка: если вы импортируете даты из внешних источников (например, 1С или базы данных), Excel может интерпретировать их как текст, даже если они выглядят как даты. Всегда проверяйте формат с помощью функции =ТИП(A1) — если результат 2, это текст, и его нужно преобразовать.

Ещё один нюанс — региональные настройки. В российской версии Excel по умолчанию используется формат даты ДД.ММ.ГГГГ, но если ваш файл создан в другой локали (например, американской, где формат ММ/ДД/ГГГГ), даты могут считываться некорректно. Чтобы избежать этого, явно указывайте формат при импорте или используйте функцию =ДАТА для ручного создания дат:

=ДАТА(2026; 5; 15)

7. Автоматизация: как ускорить расчёты

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

1. Создайте шаблон с заранее прописанными формулами. Например:

  • 📅 В ячейке A1 — начальная дата.
  • 📅 В ячейке B1 — конечная дата.
  • 📊 В ячейке C1 — формула =ДНИ(B1; A1).
  • 📊 В ячейке D1 — формула =ЧИСТРАБДНИ(A1; B1).

Сохраните этот файл как шаблон (.xltx) и используйте его как основу для новых расчётов.

2. Используйте таблицы Excel (вкладка Вставка → Таблица). Они автоматически расширяют формулы на новые строки, что удобно для работы с большими наборами данных.

3. Настройте Power Query для импорта и преобразования дат. Например, если у вас есть CSV-файл с колонками дат, вы можете:

  1. Импортировать данные через Данные → Получение данных → Из файла → Из текстового/CSV.
  2. В редакторе Power Query выбрать колонки с датами и изменить их тип на Дата.
  3. Добавить пользовательский столбец с формулой разницы дней.

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

Function CustomWorkDays(start_date, end_date, holidays As Range)

' Ваш код здесь

End Function

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

Можно ли посчитать дни между датами в Google Таблицах?

Да, в Google Sheets используются те же принципы. Формулы =ДНИ, =ЧИСТРАБДНИ и простое вычитание дат работают аналогично. Единственное отличие — в Google Таблицах функция для рабочих дней называется =NETWORKDAYS (но русскоязычная версия также поддерживает =ЧИСТРАБДНИ).

Как посчитать количество месяцев или лет между датами?

Для месяцев используйте функцию =РАЗНДАТ:

=РАЗНДАТ(A1; B1;"m")

где "m" — код для месяцев. Для лет используйте "y". Обратите внимание, что РАЗНДАТ учитывает только полные месяцы/годы. Например, разница между 31.12.2023 и 01.01.2026 составит 0 лет, несмотря на один день разницы.

Почему Excel показывает ошибку #ЧИСЛО! при вычитании дат?

Эта ошибка возникает, если одна из"дат" на самом деле является текстом или содержит недопустимое значение (например, 31.02.2026). Проверьте данные с помощью функции =ЕОШИБКА или =ДАТАЗНАЧ. Также убедитесь, что в настройках Excel включена система дат 1900 (перейдите в Файл → Параметры → Дополнительно → При переходе на эту книгу → Использовать систему дат 1900).

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

Используйте функцию =СЕГОДНЯ в сочетании с вычитанием:

=СЕГОДНЯ-A1

где A1 — ячейка с целевой датой. Если нужно получить абсолютное значение (без знака минус для будущих дат), оберните формулу в =АБС.

Можно ли учитывать только будние дни без праздников?

Да, функция =ЧИСТРАБДНИ по умолчанию исключает только субботу и воскресенье. Если вам не нужно учитывать праздники, просто опустите третий аргумент:

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

Для кастомных выходных (например, пятница-суббота) используйте =ЧИСТРАБДНИ.МЕЖД.