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

Почему расчет дней в Excel — это не так просто, как кажется

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

В этой статье мы разберем 5 проверенных способов расчета дней между датами — от базовых до продвинутых. Вы узнаете, как учитывать выходные, как избежать ошибки #ЗНАЧ!, и почему функция ДАТАЗНАЧ иногда работает непредсказуемо. А еще — уникальный лайфхак с использованием Power Query для анализа больших временных промежутков, о котором не пишут в стандартных руководствах.

Способ 1: Простое вычитание дат (базовый метод)

Самый очевидный способ — вычесть начальную дату из конечной. Excel автоматически преобразует разницу в количество дней. Например, если в ячейке A1 у вас дата 01.01.2026, а в B115.01.2026, формула будет такой:

=B1-A1

Но здесь есть подводный камень: если ячейки не отформатированы как даты, Excel воспримет их как текст. Чтобы избежать ошибки:

  1. Выделите ячейки с датами
  2. Нажмите Ctrl+1 (или правой кнопкой → Формат ячеек)
  3. Выберите категорию Дата и нужный формат (например, 14.03.2001)

Ячейки отформатированы как даты|

Нет пустых ячеек в формуле|

Используется точный формат (день.месяц.год)|

Проверена локализация (точка или запятая как разделитель)-->

Если после вычитания вы видите число вроде 44197 вместо дней — это нормально! Это внутреннее представление даты в Excel (количество дней с 1 января 1900 года). Просто измените формат результата на Общий или Числовой.

Способ 2: Функция ДНИ (DATEDIF) — скрытая мощь Excel

Функция ДНИ (или DATEDIF в английской версии) специально создана для расчета разницы между датами. Ее синтаксис:

=ДНИ(начальная_дата; конечная_дата; единица_измерения)

Где единица_измерения может быть:

  • 📅 "D" — дни (полная разница)
  • 📆 "M" — полные месяцы
  • 🗓️ "Y" — полные годы
  • 🔄 "YD" — дни без учета годов
  • 🔁 "MD" — дни без учета месяцев и годов

Пример: чтобы узнать, сколько дней прошло с 10.05.2023 (ячейка A2) до сегодня, используйте:

=ДНИ(A2;СЕГОДНЯ();"D")
⚠️ Внимание: Функция ДНИ не учитывает високосные годы при расчете месяцев и лет. Например, разница между 28.02.2023 и 28.02.2026 будет 1 год, хотя фактически прошло 366 дней.

Способ 3: Динамический расчет с функцией СЕГОДНЯ

Если вам нужно, чтобы количество дней обновлялось автоматически каждый день (например, для отслеживания сроков проектов), используйте функцию СЕГОДНЯ. Она не имеет аргументов и всегда возвращает текущую дату.

Формула для расчета дней с 01.06.2026 (ячейка C1) до сегодня:

=СЕГОДНЯ()-C1

Важные нюансы:

  • 🔄 Функция СЕГОДНЯ пересчитывается при каждом открытии файла или изменении данных
  • 📊 Для фиксации текущей даты (чтобы она не менялась) нажмите Ctrl+; или введите =СЕГОДНЯ(), затем скопируйте ячейку и выберите Специальная вставка → Значения
  • ⏱️ Если файл не открывался несколько дней, разница обновится сразу при следующем открытии

Ежедневно|

Несколько раз в неделю|

Редко|

Никогда не слышал о ней-->

Функция Пример Результат Обновляется?
СЕГОДНЯ()-A1 A1 = 01.01.2026 200 (если сегодня 19.07.2026) Да
ДНИ(A1;СЕГОДНЯ();"D") A1 = 15.06.2026 34 Да
B1-A1 A1 = 01.01.2026, B1 = 31.12.2026 365 Нет
РАЗНДАТ(A1;СЕГОДНЯ();"D") A1 = 10.05.2023 435 Да

Способ 4: Учет только рабочих дней (исключаем выходные)

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

Синтаксис:

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

Пример: расчет рабочих дней с 01.07.2026 (ячейка D1) до 15.07.2026 (ячейка E1), исключая государственные праздники (перечислены в диапазоне F1:F5):

=ЧИСТРАБДНИ(D1;E1;F1:F5)

Что важно знать:

  • 📅 По умолчанию выходные — суббота и воскресенье. Чтобы изменить это, используйте функцию ЧИСТРАБДНИ.МЕЖД (доступна в Excel 2010 и новее)
  • 🎉 Праздники нужно указывать как диапазон ячеек с датами
  • 🔄 Если конечная дата раньше начальной, результат будет отрицательным
Как указать свои выходные дни?

Функция ЧИСТРАБДНИ.МЕЖД позволяет задать кастомные выходные. Пример:

=ЧИСТРАБДНИ.МЕЖД(D1;E1;11;F1:F5)

где 11 — это код для выходных в понедельник и вторник (1 = понедельник, 2 = вторник и т.д. Суммируйте числа для нескольких дней).

Способ 5: Power Query для сложного анализа временных промежутков

Если вам нужно проанализировать дни между датами для тысяч строк (например, в отчетах по продажам или логах посещаемости), ручные формулы будут неэффективны. Здесь на помощь приходит Power Query — инструмент для обработки больших данных.

Пошаговая инструкция:

  1. Выделите таблицу с датами
  2. Перейдите на вкладку ДанныеИз таблицы/диапазона
  3. В открывшемся редакторе Power Query выберите столбец с начальной датой
  4. На вкладке Добавить столбец выберите Настраиваемый столбец
  5. Введите формулу: = Date.From([КонечнаяДата]) - Date.From([НачальнаяДата])
  6. Нажмите Закрыть и загрузить

Преимущества этого метода:

  • ⚡ Обрабатывает миллионы строк без замедления
  • 🔄 Автоматически обновляет данные при изменении источника
  • 📊 Позволяет добавлять дополнительные вычисления (например, классификацию по временным интервалам)
⚠️ Внимание: При импорте данных из внешних источников (CSV, SQL) даты могут распознаваться как текст. Всегда проверяйте формат столбцов в Power Query и при необходимости используйте функцию Date.From() для преобразования.

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

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

  1. Текст вместо дат: Если дата введена как текст (например, "01.01.2026" в кавычках), Excel не сможет ее обработать. Используйте функцию ДАТАЗНАЧ для преобразования:
    =ДАТАЗНАЧ("01.01.2026")
  2. Неправильный разделитель: В русскоязычных версиях Excel даты разделяются точкой (01.01.2026), а в англоязычных — косой чертой (01/01/2026). Если формула не работает, проверьте региональные настройки.
  3. Время в датах: Если в ячейке есть время (например, 01.01.2026 14:30), простое вычитание даст дробный результат. Используйте =ЦЕЛОЕ(B1-A1) для округления до дней.

Еще одна критическая ошибка, о которой почти не пишут: если в вашей системе установлен формат даты "день.месяц.год", а вы вводите дату в формате "месяц/день/год", Excel может неправильно интерпретировать данные. Например, 03/04/2026 будет воспринято как 3 апреля, а не 4 марта!

Практический пример: расчет возраста в днях

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

=СЕГОДНЯ()-A2

Где A2 — ячейка с датой рождения. Но что если вам нужно:

  • 👶 Узнать возраст в полных годах? =ЦЕЛОЕ((СЕГОДНЯ()-A2)/365,25) (учтены високосные годы)
  • 📅 Посчитать дни до следующего дня рождения? =ДАТА(ГОД(СЕГОДНЯ())+1;МЕСЯЦ(A2);ДЕНЬ(A2))-СЕГОДНЯ()
  • 🎂 Определить день недели рождения? =ТЕКСТ(A2;"ДДДД") (вернет "понедельник", "вторник" и т.д.)

Для визуализации можно добавить условное форматирование: выделите ячейки с возрастом и настройте правило "больше 18000" (примерно 50 лет) с красным цветом шрифта — так вы быстро найдете ветеранов компании.

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

Можно ли посчитать дни между датами в разных листах?

Да, используйте ссылку на лист в формуле. Например, чтобы вычесть дату из ячейки A1 на Лист2 из даты в B1 на текущем листе:

=B1-Лист2!A1

Убедитесь, что оба листа открыты, иначе Excel может не обновить ссылку.

Почему моя формула возвращает ###### вместо числа?

Это означает, что столбец слишком узкий для отображения результата. Расширьте столбец или измените формат ячейки на Общий. Также проверьте, не является ли результат отрицательным числом (если конечная дата раньше начальной).

Как посчитать дни с учетом только будних дней, исключая конкретные праздники?

Используйте комбинацию функций ЧИСТРАБДНИ и ЕСЛИ. Сначала создайте список праздников в отдельном диапазоне (например, H1:H10), затем:

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

Где A1 — начальная дата, B1 — конечная, а H1:H10 — диапазон с праздничными датами.

Можно ли автоматически обновлять даты в Excel Online?

Да, функции СЕГОДНЯ() и ТДАТА() работают и в веб-версии Excel, но обновляются только при открытии файла или изменении данных. В отличие от настольной версии, Excel Online не пересчитывает формулы в фоновом режиме.

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

Формулы практически идентичны Excel:

  • Простое вычитание: =B1-A1
  • Текущая дата: =TODAY() (вместо СЕГОДНЯ())
  • Рабочие дни: =NETWORKDAYS(A1;B1) (вместо ЧИСТРАБДНИ)

Обратите внимание, что в Google Таблицах разделителем формул является запятая (,), а не точка с запятой (;).