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

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

На самом деле Excel предлагает более 10 встроенных функций для работы с датами, и половину из них можно применить для расчёта дней. В этой статье мы разберём не только базовые методы (вроде простого вычитания), но и продвинутые приёмы: учёт рабочих дней, игнорирование праздников, расчёт возраста в годах/месяцах и даже динамические формулы, которые обновляются автоматически. Вы узнаете, как избежать типичных ошибок (например, когда Excel показывает дату вместо числа) и как адаптировать формулы под свои задачи.

Для наглядности все примеры сопровождаются скриншотами и готовыми файлами, которые вы сможете скачать. А в конце статьи — FAQ с ответами на частые вопросы и таблица сравнения функций, чтобы выбрать оптимальный метод для вашей задачи.

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

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

Допустим, у вас в ячейке A1 дата начала проекта (15.05.2026), а в B1 — дата окончания (30.06.2026). Введите в ячейку C1 формулу:

=B1-A1

Результат: 46 (дней). Но здесь есть подводные камни:

  • 📅 Формат ячеек: Если результат отображается как дата (например, 15.01.1900), измените формат ячейки C1 на Общий или Числовой. Для этого нажмите Ctrl+1 → выберите категорию Числовой.
  • ⚠️ Отрицательные значения: Если дата окончания раньше начальной, Excel покажет отрицательное число. Чтобы избежать этого, используйте функцию ABS:
    =ABS(B1-A1)
  • 🔄 Динамический расчёт: Если одна из дат — сегодняшний день, используйте функцию TODAY():
    =B1-TODAY()

    (обновит значение при каждом открытии файла).

2. Функция DATEDIF: расчёт дней, месяцев и лет

Функция DATEDIF (от англ. Date Difference) — одна из самых мощных, но скрытых в Excel. Она не отображается в списке функций (её не найдёте через Вставка → Функция), но работает во всех версиях, начиная с Excel 2000.

Синтаксис:

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

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

  • "D" — количество дней;
  • "M" — полных месяцев;
  • "Y" — полных лет;
  • "YM" — месяцев без учёта лет;
  • "MD" — дней без учёта месяцев и лет;
  • "YD" — дней без учёта лет (с учётом месяцев).

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

=DATEDIF(A2; TODAY(); "D")

Важно: DATEDIF округляет результаты вниз. Например, если между датами 1 год и 11 месяцев, функция вернёт 1 год (а не 2).

Почему DATEDIF скрыта в Excel?

Функция DATEDIF была добавлена для совместимости с Lotus 1-2-3 — популярным табличным редактором 1990-х. В современных версиях Excel её не рекламируют, но она по-прежнему работает и часто используется в сложных расчётах.

3. Рабочие дни: функция NETWORKDAYS

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

Синтаксис:

=NETWORKDAYS(начальная_дата; конечная_дата; [праздники])

Аргумент [праздники] необязателен — это диапазон ячеек с датами праздников, которые тоже нужно исключить.

Пример: посчитаем рабочие дни между 01.06.2026 и 30.06.2026, исключив праздники из диапазона D1:D5:

=NETWORKDAYS("01.06.2026"; "30.06.2026"; D1:D5)

Чтобы функция работала корректно, убедитесь, что:

  • 📆 Даты в аргументе праздники отформатированы как даты (а не текст).
  • 🔢 Диапазон праздников не содержит пустых ячеек (иначе Excel проигнорирует их).
📊 Как часто вам нужно считать рабочие дни в Excel?
Ежедневно
Несколько раз в неделю
Редко
Никогда
Функция Назначение Пример Учитывает выходные?
B1-A1 Простое вычитание дат =B1-A1 Нет
DATEDIF Разница в днях, месяцах, годах =DATEDIF(A1; B1; "D") Нет
NETWORKDAYS Рабочие дни (без субботы/воскресенья) =NETWORKDAYS(A1; B1; D1:D5) Да
WORKDAY Добавляет рабочие дни к дате =WORKDAY(A1; 10) Да

4. Учёт праздников и нестандартных выходных

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

Синтаксис:

=NETWORKDAYS.INTL(начальная_дата; конечная_дата; [выходные]; [праздники])

Аргумент [выходные] — это число или строка, определяющая, какие дни недели считаются выходными. Например:

  • 1 — суббота и воскресенье (по умолчанию);
  • 11 — только воскресенье;
  • "0000011" — пятница и суббота (где 1 — выходной, 0 — рабочий день).

Пример: посчитаем рабочие дни с 01.01.2026 по 31.01.2026, где выходные — пятница и суббота, а праздники указаны в диапазоне E1:E3:

=NETWORKDAYS.INTL("01.01.2026"; "31.01.2026"; "0000011"; E1:E3)
⚠️ Внимание: Если в аргументе выходные указать некорректную строку (например, "0000000" — без выходных), Excel вернёт ошибку #ЗНАЧ!. Всегда проверяйте формат строки: она должна содержать ровно 7 символов (по одному на каждый день недели, начиная с понедельника).

5. Расчёт возраста в годах, месяцах и днях

Чтобы узнать возраст человека или "возраст" проекта в годах, месяцах и днях, комбинируйте несколько функций. Например, для даты рождения в ячейке A1 (15.03.1990):

Формула для полных лет:

=DATEDIF(A1; TODAY(); "Y")

Формула для месяцев (без учёта лет):

=DATEDIF(A1; TODAY(); "YM")

Формула для дней (без учёта месяцев и лет):

=DATEDIF(A1; TODAY(); "MD")

Чтобы вывести результат в одной ячейке (например, "34 года, 2 месяца, 15 дней"), используйте функцию CONCATENATE (или &):

=DATEDIF(A1; TODAY(); "Y") & " года, " & DATEDIF(A1; TODAY(); "YM") & " мес., " & DATEDIF(A1; TODAY(); "MD") & " дн."

Для корректного склонения слов ("год", "года", "лет") потребуется более сложная формула с IF или CHOOSE. Пример для лет:

=DATEDIF(A1; TODAY(); "Y") & " " & CHOOSE(DATEDIF(A1; TODAY(); "Y")+1; "год"; "года"; "года"; "года"; "лет")

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

Функция TODAY() обновляется автоматически|

Учтено склонение слов (год/года/лет)|

Проверены крайние случаи (например, дата рождения = сегодня)

-->

6. Динамические расчёты и ошибки

Excel позволяет создавать динамические формулы, которые обновляются при изменении данных или открытии файла. Например, чтобы всегда видеть, сколько дней осталось до дедлайна (в ячейке B1):

=B1-TODAY()

Если результат отрицательный — дедлайн просрочен. Чтобы выделить такие ячейки красным, используйте Условное форматирование:

  1. Выделите ячейку с формулой.
  2. Перейдите на вкладку Главная → Условное форматирование → Правила выделения ячеек → Меньше....
  3. Введите 0 и выберите красный цвет.

Типичные ошибки и их решения:

  • 🔴 #ИМЯ? — опечатка в названии функции (например, DATEDIF написано как DATEIF).
  • 🔴 #ЗНАЧ! — неверный формат даты (проверьте, что ячейка содержит дату, а не текст).
  • 🔴 Результат отображается как дата (например, 01.01.1900) — измените формат ячейки на Общий.
⚠️ Внимание: Функция TODAY() обновляется только при открытии файла или принудительном пересчёте (F9). Если вы отправляете файл коллеге, и он откроет его через неделю, все расчёты с TODAY() обновятся автоматически. Чтобы зафиксировать текущую дату, замените TODAY() на конкретную дату (например, "31.12.2026") перед сохранением.

7. Продвинутые приёмы: массивы и Power Query

Для сложных задач (например, расчёт дней между датами для тысяч строк или учёт индивидуальных графиков выходных) используйте:

  • 📊 Формулы массива: Например, чтобы посчитать рабочие дни для списка дат в столбце A с учётом праздников из столбца D:
    =NETWORKDAYS(A2:A100; B2:B100; D2:D10)

    (введите формулу как формулу массива с Ctrl+Shift+Enter в старых версиях Excel).

  • 🔧 Power Query: Импортируйте данные в Power Query (вкладка Данные → Получить данные), добавьте столбец с расчётом дней и загрузите обратно в Excel. Это удобно для больших наборов данных.
  • 📈 DAX в Power Pivot: Если вы работаете с Power Pivot, используйте функцию DATEDIFF в языке DAX:
    =DATEDIFF([StartDate]; [EndDate]; DAY)

Пример использования Power Query:

  1. Выделите таблицу с датами.
  2. Перейдите на вкладку Данные → Из таблицы/диапазона.
  3. В редакторе Power Query добавьте пользовательский столбец с формулой:
    = Duration.Days([EndDate] - [StartDate])
  4. Нажмите Закрыть и загрузить.

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

Как посчитать дни между датами, если одна из них пустая?

Используйте функцию IF для проверки пустых ячеек. Например:

=IF(OR(ISBLANK(A1); ISBLANK(B1)); ""; B1-A1)

Эта формула вернёт пустую строку, если хотя бы одна из ячеек A1 или B1 пуста.

Можно ли посчитать дни с учётом только будних дней (понедельник-пятница)?

Да, используйте NETWORKDAYS без аргумента праздники:

=NETWORKDAYS(A1; B1)

По умолчанию она исключает субботу и воскресенье.

Как узнать, сколько дней прошло с начала года?

Вычтите из текущей даты первую дату года:

=TODAY() - DATE(YEAR(TODAY()); 1; 1)

Или для произвольной даты в ячейке A1:

=A1 - DATE(YEAR(A1); 1; 1)
Почему Excel показывает ###### вместо результата?

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

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

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

  • Функция DATEDIF работает, но не документирована.
  • Для текущей даты используйте TODAY() (как в Excel).
  • Формулы массива вводятся без Ctrl+Shift+Enter.