Работа с датами в Microsoft Excel — одна из самых востребованных задач, особенно когда нужно рассчитать разницу между текущим днём и какой-либо прошлой или будущей датой. Чаще всего пользователи сталкиваются с необходимостью узнать, сколько дней прошло с определённого события, когда истекает срок действия документа или сколько времени осталось до дедлайна. В этой статье мы разберём все возможные способы, как в Excel отнять дату от сегодняшнего дня — от простейших формул до продвинутых приёмов с учётом выходных и праздников.
Многие ошибочно думают, что для таких расчётов нужны сложные макросы или дополнительные надстройки. На самом деле, все операции выполняются стандартными функциями, которые есть в любой версии Excel (2010, 2013, 2016, 2019, 365 и даже в Excel Online). Главное — понимать логику работы с датами и правильно применять синтаксис. Далее вы найдёте не только готовые формулы, но и объяснения, почему они работают именно так, а не иначе.
Если вы никогда раньше не работали с датами в Excel, не переживайте: мы начнём с азов и постепенно перейдём к более сложным примерам. А для опытных пользователей в конце статьи подготовлены неочевидные лайфхаки, которые сэкономят время при работе с большими массивами данных.
Почему простое вычитание дат не всегда работает
На первый взгляд, вычесть одну дату из другой в Excel кажется элементарной задачей: достаточно в ячейке написать =ТЕКУЩАЯ_ДАТА - ДРУГАЯ_ДАТА, и программа сама посчитает разницу. Однако на практике пользователи сталкиваются с неожиданными ошибками, когда вместо числа дней получают бессмысленный набор символов или ошибку #ЗНАЧ!.
Дело в том, что Excel хранит даты не как текст, а как последовательные числа, где 1 соответствует 1 января 1900 года. Например, дата 10.05.2026 для программы — это число 45419. Когда вы вычитаете одну дату из другой, Excel на самом деле выполняет арифметическую операцию с этими числами, а результат отображает в формате даты по умолчанию.
Чтобы избежать ошибок, нужно соблюдать два ключевых правила:
- Убедиться, что обе ячейки имеют формат даты (а не текст или общее число).
- Использовать функции
СЕГОДНЯ()(TODAY()) илиТДАТА()для динамического получения текущей даты.
Если просто ввести в ячейку =A1-B1, где A1 — сегодняшняя дата в текстовом формате, а B1 — дата в формате даты, Excel выдаст ошибку. Поэтому важно сначала привести данные к единому формату.
Способ 1: Простое вычитание с функцией СЕГОДНЯ()
Самый базовый и универсальный метод — использовать функцию СЕГОДНЯ() (или TODAY() в английской версии). Она возвращает текущую дату, которая автоматически обновляется при каждом пересчёте листа. Формула для вычитания другой даты выглядит так:
=СЕГОДНЯ() - B2
Где B2 — ячейка с датой, которую нужно вычесть. Результат будет в днях. Например, если сегодня 15.05.2026, а в B2 записано 10.05.2026, формула вернёт 5.
Чтобы результат отображался корректно:
- Выделите ячейку с формулой.
- Нажмите
Ctrl+1(или правая кнопка мыши →Формат ячеек). - Выберите формат
ОбщийилиЧисловой.
Если вам нужно получить разницу в месяцах или годах, простое вычитание не подойдёт — потребуются дополнительные функции, о которых мы расскажем дальше.
Способ 2: Разница в днях с учётом времени
Иногда требуется узнать не только количество полных дней, но и часы, минуты или секунды. Например, если вы отслеживаете время выполнения задачи с точностью до часа. В этом случае простого вычитания недостаточно — нужно использовать формат ячейки с отображением времени.
Формула остаётся прежней:
=СЕГОДНЯ() - B2
Но после её ввода:
- Выделите ячейку с результатом.
- Откройте
Формат ячеек(Ctrl+1). - В категории
Все форматывведите пользовательский формат:д.м.гггг ч:ммили для большей точности:
д.м.гггг ч:мм:сс
Теперь результат будет выглядеть как
Если после вычитания дат вы видите число вроде 5 дн. 14:30 (5 дней и 14 часов). Это удобно для расчёта времени, прошедшего с момента создания заявки, начала проекта или последнего обновления данных.
Что делать, если вместо дней отображаются случайные числа?
45420 вместо ожидаемых дней, значит формат ячейки установлен как Общий или Дата. Измените его на Числовой или Общий, и Excel покажет корректную разницу в днях.
Способ 3: Разница в месяцах или годах
Вычитание дат в Excel по умолчанию возвращает разницу в днях, но часто требуется узнать, сколько полных месяцев или лет прошло между двумя датами. Для этого используются функции РАЗНДАТ() (DATEDIF в английской версии) или комбинация ГОД(), МЕСЯЦ() и ДЕНЬ().
Функция РАЗНДАТ() имеет следующий синтаксис:
=РАЗНДАТ(начальная_дата; конечная_дата; единица_измерения)
Где единица_измерения может принимать значения:
- 📅
"d"— разница в днях (аналог простого вычитания). - 📆
"m"— разница в полных месяцах. - 🗓️
"y"— разница в полных годах. - 📅📆
"ym"— разница в месяцах без учёта лет. - 📅🗓️
"yd"— разница в днях без учёта лет.
Примеры:
| Формула | Описание | Пример результата (сегодня: 15.05.2026, дата в B2: 10.02.2023) |
|---|---|---|
=РАЗНДАТ(B2;СЕГОДНЯ();"m") |
Полных месяцев между датами | 15 (с февраля 2023 по май 2026) |
=РАЗНДАТ(B2;СЕГОДНЯ();"y") |
Полных лет между датами | 1 |
=РАЗНДАТ(B2;СЕГОДНЯ();"ym") |
Месяцев без учёта полных лет | 3 (февраль-май 2026) |
Обратите внимание: функция РАЗНДАТ() не документирована в официальной справке Microsoft, но работает во всех версиях Excel. Если вы предпочитаете "официальные" функции, используйте альтернативный подход с ГОД() и МЕСЯЦ():
=ГОД(СЕГОДНЯ())-ГОД(B2)-ЕСЛИ(ИЛИ(МЕСЯЦ(СЕГОДНЯ())<МЕСЯЦ(B2);И(МЕСЯЦ(СЕГОДНЯ())=МЕСЯЦ(B2);ДЕНЬ(СЕГОДНЯ())<ДЕНЬ(B2)));1;0)
Эта формула рассчитывает разницу в полных годах с учётом месяцев и дней.
Ячейки с датами имеют формат "Дата"|Формула использует СЕГОДНЯ() для динамического обновления|Результат отформатирован как "Общий" или "Числовой"|Учтена разница между 31-м и 1-м числом месяца-->
Способ 4: Разница с учётом рабочих дней (исключая выходные)
Если вам нужно посчитать только рабочие дни (исключая субботу и воскресенье), используйте функцию ЧИСТРАБДНИ() (NETWORKDAYS). Она автоматически пропускает выходные и опционально может учитывать праздники.
Базовый синтаксис:
=ЧИСТРАБДНИ(начальная_дата; конечная_дата; [праздники])
Пример:
=ЧИСТРАБДНИ(B2; СЕГОДНЯ())
Если у вас есть список праздничных дней (например, в диапазоне D2:D10), добавьте его третьим аргументом:
=ЧИСТРАБДНИ(B2; СЕГОДНЯ(); D2:D10)
Функция вернёт количество рабочих дней между двумя датами. Например, если сегодня 15.05.2026 (среда), а в B2 записано 10.05.2026 (пятница), результат будет 3 (понедельник, вторник, среда), так как суббота и воскресенье исключаются.
Для расчёта часов между рабочими днями умножьте результат на количество рабочих часов в день. Например, при 8-часовом рабочем дне:
=ЧИСТРАБДНИ(B2; СЕГОДНЯ()) * 8
Способ 5: Автоматическое обновление даты без функции СЕГОДНЯ()
Функция СЕГОДНЯ() обновляет дату при каждом открытии файла или пересчёте листа. Но что делать, если нужно зафиксировать "сегодняшнюю" дату на момент создания файла и дальше работать с ней как с константой? Есть два решения:
1. Ввод статической даты:
- 📅 Нажмите
Ctrl+;(точка с запятой) — Excel вставит текущую дату как значение, а не как формулу. - 🔄 Чтобы дата не обновлялась, используйте
Правка → Специальная вставка → Значения.
2. Использование VBA (для продвинутых пользователей):
Если вам нужно, чтобы дата обновлялась только по кнопке, создайте простую макрос-функцию:
Sub UpdateToday()
Range("A1").Value = Date
End Sub
Привяжите этот макрос к кнопке на листе, и дата в A1 будет обновляться только при нажатии.
Такой подход удобен для отчётов, где дата создания документа должна оставаться неизменной, но при этом нужно иметь возможность её обновить вручную.
Типичные ошибки и как их избежать
Даже опытные пользователи Excel иногда сталкиваются с ошибками при работе с датами. Вот самые распространённые проблемы и их решения:
1. Ошибка #ЗНАЧ! при вычитании дат:
⚠️ Внимание: Эта ошибка возникает, если хотя бы одна из ячеек имеет текстовый формат, а не формат даты. Проверьте формат ячеек (Ctrl+1) и при необходимости преобразуйте текст в дату с помощью функцииДАТАЗНАЧ():
=СЕГОДНЯ() - ДАТАЗНАЧ(B2)
2. Неправильный результат из-за времени:
Если в ячейке с датой указано время (например, 10.05.2026 14:30), простое вычитание может дать дробное число дней. Чтобы получить только целые дни, используйте функцию ЦЕЛОЕ():
=ЦЕЛОЕ(СЕГОДНЯ() - B2)
3. Даты в разных временных зонах:
Excel не учитывает временные зоны при вычитании дат. Если вы работаете с международными данными, сначала приведите все даты к одной временной зоне (например, с помощью функции ВРЕМЯ()).
4. Функция РАЗНДАТ не работает:
⚠️ Внимание: В некоторых локализованных версиях Excel (например, немецкой) функцияРАЗНДАТможет называться иначе или требовать точку с запятой в качестве разделителя аргументов. Попробуйте заменить запятые на точку с запятой:=РАЗНДАТ(B2; СЕГОДНЯ(); "m")→=РАЗНДАТ(B2; СЕГОДНЯ(); "m").
Если ни один из способов не помог, проверьте региональные настройки Excel (Файл → Параметры → Язык) и убедитесь, что выбран правильный язык формул.
Практические примеры использования
Разберём несколько реальных задач, где требуется вычесть дату из сегодняшнего дня, и готовые решения для них.
1. Расчёт остатка срока действия документа:
Допустим, в ячейке B2 указана дата истечения паспорта (10.11.2026). Чтобы узнать, сколько дней осталось до замены:
=B2 - СЕГОДНЯ()
Если результат отрицательный, документ просрочен. Чтобы вывести предупреждение, используйте функцию ЕСЛИ():
=ЕСЛИ(B2-СЕГОДНЯ()<0; "Просрочено!"; B2-СЕГОДНЯ() & " дней")
2. Автоматический расчёт возраста:
В ячейке B2 указана дата рождения (15.07.1990). Чтобы посчитать возраст в годах:
=РАЗНДАТ(B2; СЕГОДНЯ(); "y")
3. Контроль выполнения задач:
В таблице с дедлайнами (столбец C) нужно выделить красным задачи, у которых осталось менее 3 дней:
- Создайте столбец с формулой:
=C2-СЕГОДНЯ(). - Примените
Условное форматирование → Правила выделения ячеек → Меньше 3.
4. Расчёт пеней за просрочку:
Если в ячейке B2 указана дата оплаты (01.05.2026), а сегодня 15.05.2026, то пени за 14 дней просрочки можно посчитать так:
=ЕСЛИ(СЕГОДНЯ()>B2; (СЕГОДНЯ()-B2)*0.1%; 0)
Где 0.1% — ежедневный штраф.
5. Анализ временных интервалов:
Чтобы узнать, сколько рабочих недель прошло с начала проекта (дата в B2):
=ЧИСТРАБДНИ(B2; СЕГОДНЯ()) / 5
Делим на 5, так как в неделе 5 рабочих дней.
Эти примеры можно адаптировать под любые задачи — от личных финансов до корпоративной отчётности.
FAQ: Ответы на частые вопросы
Как вычесть из сегодняшней даты 30 дней?
Используйте функцию СЕГОДНЯ() с вычитанием:
=СЕГОДНЯ()-30
Результат будет датой, которая была 30 дней назад. Чтобы отформатировать её как дату, нажмите Ctrl+1 и выберите формат Дата.
Почему после вычитания дат получается число 45420 вместо дней?
Это внутреннее представление даты в Excel, где 1 = 1 января 1900 года. Чтобы преобразовать его в дни, измените формат ячейки на Общий или Числовой. Если нужно вернуть дату, используйте формат Дата.
Как посчитать разницу между сегодняшним днём и датой в другом файле?
Откройте оба файла. В основном файле используйте формулу с ссылкой на внешний источник:
=СЕГОДНЯ() - [Книга2.xlsx]Лист1!$A$1
Где [Книга2.xlsx] — имя второго файла, а $A$1 — ячейка с датой. Убедитесь, что путь к файлу не содержит кириллических символов.
Можно ли вычесть дату из сегодняшнего дня в Google Таблицах?
Да, синтаксис почти идентичен. Используйте:
=TODAY() - B2
Все функции (DATEDIF, NETWORKDAYS) также работают, но могут называться немного иначе (например, РАЗНДАТ вместо DATEDIF).
Как сделать так, чтобы дата не обновлялась при открытии файла?
Замените функцию СЕГОДНЯ() на статическое значение:
- Введите в ячейку
=СЕГОДНЯ()и нажмитеEnter. - Скопируйте ячейку (
Ctrl+C). - Выделите её же и выполните
Правка → Специальная вставка → Значения.
Теперь дата зафиксирована и не будет меняться.