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

Почему Excel «не видит» ваши даты и как это исправить

Вы когда-нибудь пытались вычесть одну дату из другой в Microsoft Excel, но вместо ожидаемого количества дней получали странное число вроде 45689? Это не ошибка программы — так Excel хранит даты внутренне. С 1 января 1900 года (в Windows) или 1904 года (в Mac) каждая дата преобразуется в порядковый номер дня. Например, 1 января 2026 — это 45292 в системе Windows.

Знание этого принципа решает 90% проблем с вычислением дней. Но есть нюансы: если ячейка отформатирована как текст, Excel не распознаёт её как дату, даже если там написано 15.05.2026. Или если вы вводите дату через точку (15.05.2026), а в настройках системы разделитель — запятая. В таких случаях формулы вроде =B2-A2 вернут ошибку #ЗНАЧ!.

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

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

Самый очевидный способ — вычесть одну дату из другой. Если в ячейке A1 у вас 01.01.2026, а в B110.01.2026, формула =B1-A1 вернёт 9. Но здесь есть 3 ключевых момента:

  • 📅 Формат ячеек: обе даты должны быть в формате Дата (проверьте в Главная → Формат → Формат ячеек). Если видите выравнивание по левому краю — это текст, а не дата.
  • ⚠️ Отрицательные значения: если первая дата позже второй, результат будет отрицательным (например, =A1-B1 даст -9).
  • 🔄 Время в датах: если в ячейках есть время (например, 01.01.2026 15:30), Excel учтёт и его. Чтобы игнорировать время, используйте =ЦЕЛОЕ(B1-A1).

Пример с учётом времени:

=ЦЕЛОЕ(B1-A1)  // Вернёт только целые дни, игнорируя часы
⚠️ Внимание: Если после вычитания вы видите число вроде 45689 вместо дней, измените формат результата на Общий или Числовой.
📊 Какой формат дат вы используете чаще?
ДД.ММ.ГГГГ
ММ/ДД/ГГГГ
ГГГГ-ММ-ДД
Другой

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

Функция ДАТАРАЗН (или DATEDIF в английской версии) — это «секретное оружие» для работы с датами. Она не отображается в мастер-функций, но работает во всех версиях Excel. Синтаксис:

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

Аргумент единица_измерения определяет, что вычислять:

  • "D" — полные дни между датами (=ДАТАРАЗН(A1;B1;"D")).
  • "M" — полные месяцы (=ДАТАРАЗН(A1;B1;"M")).
  • "Y" — полные годы (=ДАТАРАЗН(A1;B1;"Y")).
  • "YM" — месяцы без учёта лет (=ДАТАРАЗН(A1;B1;"YM")).
  • "MD" — дни без учёта месяцев и лет (=ДАТАРАЗН(A1;B1;"MD")).

Пример: чтобы узнать, сколько лет, месяцев и дней человеку на текущую дату, используйте:

=ДАТАРАЗН(A1;СЕГОДНЯ();"Y") & " лет, " & ДАТАРАЗН(A1;СЕГОДНЯ();"YM") & " мес., " & ДАТАРАЗН(A1;СЕГОДНЯ();"MD") & " дн."
Формула Пример Результат (для дат 01.01.2020 и 15.03.2026)
=ДАТАРАЗН(A1;B1;"D") Полные дни 1556
=ДАТАРАЗН(A1;B1;"M") Полные месяцы 50
=ДАТАРАЗН(A1;B1;"Y") Полные годы 4
=ДАТАРАЗН(A1;B1;"YM") Месяцы без лет 2
=ДАТАРАЗН(A1;B1;"MD") Дни без месяцев и лет 14

Способ 3: Функция РАЗНДАТ (DAYS) — альтернатива для новых версий

В Excel 2013 и новее появилась функция РАЗНДАТ (DAYS), которая упрощает подсчёт дней между двумя датами. Её синтаксис:

=РАЗНДАТ(конечная_дата; начальная_дата)

Особенности:

  • 🔹 Всегда возвращает положительное число (автоматически меняет даты местами, если первая позже второй).
  • 📊 Работает с массивами: если передать диапазон ячеек, вернёт массив результатов.
  • ❌ Не учитывает время (в отличие от простого вычитания).

Пример с массивом: если в A1:A3 даты начала проектов, а в B1:B3 — даты окончания, формула =РАЗНДАТ(B1:B3;A1:A3) вернёт длительность каждого проекта в днях.

⚠️ Внимание: Функция РАЗНДАТ игнорирует формат ячеек. Если в ячейке текст, который выглядит как дата (например, "01.01.2026"), функция вернёт ошибку #ЗНАЧ!. Используйте =ДАТАЗНАЧ(A1), чтобы преобразовать текст в дату.

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

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

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

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

  • 📅 В A1: 01.01.2026 (начало периода).
  • 📅 В B1: 31.01.2026 (конец периода).
  • 🎉 В D1:D3: даты праздников (07.01.2026, 08.01.2026).

Формула вернёт количество рабочих дней за январь 2026 года без учёта новогодних каникул:

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

Убедитесь, что все даты в формате Дата|Проверьте диапазон праздников на наличие пустых ячеек|Используйте абсолютные ссылки для диапазона праздников (например, $D$1:$D$3)|Сравните результат с календарём для точности-->

Для подсчёта рабочих дней между текущей датой и другой датой используйте:

=ЧИСТРАБДНИ(СЕГОДНЯ(); B1)

Способ 5: Определение дня недели и условный подсчёт

Иногда нужно посчитать дни конкретного типа — например, только понедельники или выходные. Для этого комбинируйте функции ДЕНЬНЕД (WEEKDAY) и ЕСЛИ.

Функция ДЕНЬНЕД возвращает номер дня недели (от 1 до 7), где:

  • 1 — воскресенье (в настройках Windows).
  • 2 — понедельник.
  • ...
  • 7 — суббота.

Пример: подсчёт количества пятниц между двумя датами. Создайте столбец с датами (например, A1:A30) и используйте:

=СУММПРОИЗВ(--(ДЕНЬНЕД(A1:A30)=6))

Здесь 6 — код пятницы (в зависимости от настроек Excel).

Как изменить нумерацию дней недели?

По умолчанию в Windows 1 = воскресенье, но это можно поменять. В функции ДЕНЬНЕД есть второй аргумент — тип_возврата:

- 1 или опущен — 1=воскресенье, 7=суббота.

- 2 — 1=понедельник, 7=воскресенье.

- 3 — 0=понедельник, 6=воскресенье.

Пример: =ДЕНЬНЕД(A1;2) вернёт 1 для понедельника.

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

=ЧИСЛКОМБ(ДАТА(ГОД(A1);МЕСЯЦ(A1);1):B1)-ЧИСТРАБДНИ(A1;B1)

Эта формула считает все дни в периоде и вычитает рабочие дни.

Способ 6: Учёт праздников и производственного календаря

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

Синтаксис:

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

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

  • "0000011" — выходные суббота и воскресенье (стандарт).
  • "0000001" — выходной только воскресенье.
  • "0000101" — выходные пятница и воскресенье.
  • 11 — выходные суббота и воскресенье (числовой формат).

Пример: подсчёт рабочих дней для мусульманской рабочей недели (выходные — пятница и суббота):

=ЧИСТРАБДНИ.МЕЖД(A1; B1; "0000110"; D1:D5)
⚠️ Внимание: Если вы используете числовой формат для аргумента [выходные], помните, что 1 соответствует понедельнику, а 7 — воскресенью. Например, 17 означает, что выходные — понедельник и воскресенье (1 + 16).

Способ 7: Динамический подсчёт дней до события

Чтобы создать обратный отсчёт до конкретной даты (например, до Нового года или дедлайна проекта), используйте комбинацию функций СЕГОДНЯ и РАЗНДАТ:

=РАЗНДАТ(целевая_дата; СЕГОДНЯ())

Примеры:

  • 🎄 До Нового года: =РАЗНДАТ(ДАТА(ГОД(СЕГОДНЯ())+1;1;1); СЕГОДНЯ()).
  • 📅 До конца месяца: =РАЗНДАТ(ДАТА(ГОД(СЕГОДНЯ());МЕСЯЦ(СЕГОДНЯ())+1;1); СЕГОДНЯ()).
  • 🎂 До дня рождения: =РАЗНДАТ(ДАТА(ГОД(СЕГОДНЯ());5;15); СЕГОДНЯ()) (для 15 мая).

Чтобы отобразить результат в виде текста (например, "Осталось 15 дней"), используйте:

="Осталось " & РАЗНДАТ(целевая_дата; СЕГОДНЯ()) & " дней"

Частые ошибки и как их избежать

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

  1. #ЗНАЧ! при вычитании дат

    Причина: одна или обе даты хранятся как текст. Решение: используйте =ДАТАЗНАЧ(A1) для преобразования или измените формат ячейки на Дата.

  2. Неправильный подсчёт рабочих дней

    Причина: не учтены праздники или неправильно указаны выходные. Решение: проверьте диапазон праздников и формат аргумента [выходные] в ЧИСТРАБДНИ.МЕЖД.

  3. Отрицательное количество дней

    Причина: первая дата позже второй. Решение: используйте =АБС(B1-A1) для абсолютного значения или поменяйте даты местами.

  4. Неверный день недели

    Причина: в настройках системы первый день недели — воскресенье, а вы ожидаете понедельник. Решение: используйте второй аргумент в ДЕНЬНЕД, например =ДЕНЬНЕД(A1;2).

  5. Функция ДАТАРАЗН не работает

    Причина: опечатка в аргументе единица_измерения (должен быть верхний регистр). Решение: проверьте регистр букв (например, "D", а не "d").

Если вы работаете с Google Sheets, учтите, что там:

  • 🔹 Функция DATEDIF работает, но не отображается в списке.
  • 🔹 Для подсчёта рабочих дней используйте =NETWORKDAYS (аналог ЧИСТРАБДНИ).
  • 🔹 Формат дат по умолчанию может отличаться (например, ММ/ДД/ГГГГ вместо ДД.ММ.ГГГГ).

FAQ: Ответы на популярные вопросы

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

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

=Лист2!B1-Лист1!A1

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

Почему функция ДАТАРАЗН возвращает ошибку #ЧИСЛО?

Ошибка #ЧИСЛО! возникает, если:

  • Начальная дата позже конечной (для аргументов "Y", "M", "D").
  • Вы используете неверный аргумент единица_измерения (например, "X" вместо "D").

Решение: проверьте порядок дат и правильность аргумента.

Как посчитать дни с учётом полурабочих дней (например, суббота — короткий день)?

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

  1. Подсчитайте все рабочие дни функцией ЧИСТРАБДНИ.МЕЖД.
  2. Подсчитайте количество суббот (или других полурабочих дней) с помощью ДЕНЬНЕД.
  3. Добавьте к результату половину от количества суббот.

Пример:

=ЧИСТРАБДНИ.МЕЖД(A1;B1;"0000010") + СУММПРОИЗВ(--(ДЕНЬНЕД(СТРОКА(ДВССЫЛ(A1:B1)))=7))/2
Можно ли посчитать дни между датами в Power Query?

Да, в Power Query (вкладка Данные → Получение данных) вы можете:

  1. Загрузить таблицу с датами.
  2. Добавить пользовательский столбец с формулой = [КонечнаяДата] - [НачальнаяДата].
  3. Изменить тип данных нового столбца на Целое число.

Преимущество: Power Query автоматически обрабатывает ошибки формата дат.

Как вычесть из даты фиксированное количество дней?

Просто добавьте или вычтите число из ячейки с датой. Например, чтобы получить дату на 10 дней раньше:

=A1-10

Excel автоматически скорректирует месяц/год, если вычитание затрагивает переход через границу месяца. Например, 05.01.2026 - 10 даст 26.12.2023.