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

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

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

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

Способ 1: Базовое вычитание дат (календарные дни)

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

=КОНДАТА - НАЧДАТА

Где КОНДАТА и НАЧДАТА — это адреса ячеек с датами. Например, если начальная дата в ячейке A2, а конечная — в B2, формула будет:

=B2 - A2

Результат покажет количество полных дней между датами (включая начальную дату, но не конечную). Если вам нужно включить обе даты в подсчет, добавьте +1 к формуле.

Ячейки имеют формат "Дата" (а не "Текст" или "Общий")|Даты введены корректно (например, 31.02.2026 — ошибка)|Нет пустых ячеек в диапазоне|Формат результата — "Общий" или "Числовой"-->

⚠️ Внимание: Если после вычитания вы видите странное число вроде 45678 вместо количества дней, значит Excel интерпретирует ваши данные не как даты, а как текст. Исправьте формат ячеек через Формат ячеек → Дата.

Способ 2: Функция РАЗНДАТ — универсальный инструмент

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

=РАЗНДАТ(нач_дата; кон_дата; единица)

Где единица — это код возвращаемого значения:

  • 📅 "d" — количество дней;
  • 📆 "m" — количество полных месяцев;
  • 🎂 "y" — количество полных лет;
  • 📅📆 "yd" — дни с начала года (игнорируя годы);
  • 📆📆 "md" — дни с начала месяца (игнорируя месяцы и годы).

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

=РАЗНДАТ("01.01.2000"; СЕГОДНЯ(); "y") & " лет и " & РАЗНДАТ("01.01.2000"; СЕГОДНЯ(); "yd") & " дней"
Почему функция РАЗНДАТ скрыта в Excel?

В современных версиях Excel РАЗНДАТ не отображается в списке функций (из-за унаследованного статуса), но она по-прежнему работает. Чтобы ее использовать, вводите название вручную или через Вставка → Функция → Полный алфавитный перечень.

Единица Описание Пример Результат для 01.01.2020 — 15.03.2023
"d" Количество дней =РАЗНДАТ("01.01.2020"; "15.03.2023"; "d") 1169
"m" Полные месяцы =РАЗНДАТ("01.01.2020"; "15.03.2023"; "m") 38
"y" Полные годы =РАЗНДАТ("01.01.2020"; "15.03.2023"; "y") 3
"yd" Дни с начала года (игнорируя годы) =РАЗНДАТ("01.01.2020"; "15.03.2023"; "yd") 73

Способ 3: Расчет рабочих дней (исключая выходные)

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

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

Необязательный параметр [праздники] позволяет указать диапазон ячеек с датами праздников, которые тоже нужно исключить. Например:

=ЧИСТРАБДНИ(A2; B2; D2:D10)

Где D2:D10 — список официальных праздников.

Ежедневно|Несколько раз в неделю|Редко, по необходимости|Никогда не пользовался этой функцией-->

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

=ЧИСТРАБДНИ.МЕЖД(A2; B2; 1; D2:D10)

Где 1 — код выходного дня (1 = суббота/воскресенье, 2 = воскресенье/понедельник, и т.д.).

Способ 4: Учет временных зон и точного времени

Если ваши даты включают не только день, но и время (например, 12.05.2026 14:30), простое вычитание даст результат в днях и их долях. Чтобы преобразовать это в часы, минуты или секунды, используйте:

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

Для работы с временными зонами (например, если одна дата в UTC+3, а другая в UTC-5), сначала приведите обе даты к одному часовому поясу с помощью функции ВРЕМЯ или ЧАС:

=B2 - (A2 + ВРЕМЯ(разница_в_часах; 0; 0))

Способ 5: Динамические расчеты с функциями СЕГОДНЯ и ТДАТА

Если вам нужно рассчитывать дни от фиксированной даты до текущего момента, используйте:

  • 📅 =СЕГОДНЯ() - A2 — дни с даты в A2 до сегодня;
  • =ТДАТА() - A2 — дни, часы и минуты с даты в A2 до текущего момента (обновляется при каждом открытии файла).

Важно: функции СЕГОДНЯ и ТДАТА пересчитываются при каждом открытии файла или изменении данных. Если вам нужно зафиксировать текущую дату (например, для отчета), используйте Ctrl + ; (горячие клавиши для вставки статической даты).

Пример динамического расчета возраста:

="Возраст: " & РАЗНДАТ(A2; СЕГОДНЯ(); "y") & " лет, " & РАЗНДАТ(A2; СЕГОДНЯ(); "ym") & " месяцев, " & РАЗНДАТ(A2; СЕГОДНЯ(); "md") & " дней"

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

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

  1. #ЗНАЧ! (ошибка значения): Возникает, если одна из ячеек содержит текст вместо даты. Проверьте формат ячеек и используйте =ДАТАЗНАЧ() для преобразования текста в дату:
    =ДАТАЗНАЧ("31.12.2026")
  2. Неправильный результат: Если вычитая даты, вы получаете отрицательное число, значит нач_дата позже кон_дата. Используйте =АБС(B2 - A2), чтобы всегда получать положительное значение.
  3. Округление дней: При работе с временем Excel может округлять дробные дни. Чтобы избежать этого, установите формат ячейки как Числовой с нужным количеством знаков после запятой.

Еще одна частая проблема — региональные настройки дат. Например, в США даты записываются как MM/DD/YYYY, а в Европе — DD.MM.YYYY. Если Excel путает месяцы и дни, измените региональные параметры в Файл → Параметры → Дополнительно → Параметры редактирования.

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

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

Используйте ссылку на лист в формуле. Например, если начальная дата на Лист1 в ячейке A2, а конечная на Лист2 в B2, формула будет:

=Лист2!B2 - Лист1!A2

Убедитесь, что имена листов не содержат пробелов или специальных символов (или возьмите имя в одинарные кавычки: 'Мой лист'!A2).

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

Да, все описанные функции работают и в Google Sheets, за исключением РАЗНДАТ — там она называется DATEDIF (но синтаксис идентичен). Также в Google Таблицах есть дополнительная функция =DAYS(B2; A2), которая упрощает подсчет дней.

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

Используйте формулу:

=ЦЕЛОЕ((B2 - A2) / 7)

Или с учетом остатка:

=ЦЕЛОЕ((B2 - A2) / 7) & " недель и " & ОСТАТ((B2 - A2); 7) & " дней"
Почему моя формула возвращает ###### вместо числа?

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

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

Для этого понадобится комбинация функций ДЕНЬНЕД и СУММПРОИЗВ. Например, чтобы посчитать только понедельники между двумя датами:

=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A2:B2))-1)=2))

Где 2 — код понедельника (воскресенье = 1, понедельник = 2, ..., суббота = 7). Для диапазона дат используйте:

=СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A2:ИНДЕКС(A:A; B2-A2)))-1)=2))