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

Работа с датами в Microsoft Excel — одна из самых востребованных задач при ведении отчётности, планировании или анализе данных. Часто пользователям требуется автоматически проставлять вчерашнюю дату в ячейках: для отслеживания просроченных заданий, фиксации даты последнего обновления или создания динамических отчётов. В отличие от текущей даты (которую можно вставить клавишей Ctrl+;), вчерашняя требует немного других подходов.

В этой статье мы разберём 5 рабочих методов, как поставить вчерашнюю дату в Excel — от простейших формул до автоматизации через VBA. Вы узнаете, как сделать так, чтобы дата обновлялась автоматически при каждом открытии файла, как зафиксировать статическое значение, и какие подводные камни могут встретиться при работе с разными форматами ячеек. Особое внимание уделим нюансам для Excel 365, Excel 2019 и более старых версий.

Независимо от вашего уровня — новичок или опытный пользователь — здесь найдётся решение под вашу задачу. А если вы работаете с Google Sheets, в конце статьи есть отдельный раздел с адаптацией формул для этого сервиса.

1. Самый простой способ: формула =TODAY()-1

Начнём с базового метода, который работает во всех версиях Excel — от Excel 2007 до Microsoft 365. Формула =TODAY()-1 вычитает один день из текущей даты, возвращая вчерашнюю. Этот способ идеален, если вам нужно, чтобы дата автоматически обновлялась при каждом пересчёте листа или открытии файла.

Как это работает:

  • 📅 Функция TODAY() возвращает текущую дату (сегодня).
  • 🔢 Вычитание -1 сдвигает её на один день назад.
  • 🔄 Формула динамическая: при открытии файла завтра она покажет уже "вчера" относительно новой текущей даты.

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

  1. Выделите ячейку, куда нужно вставить дату (например, A1).
  2. Введите формулу:
    =TODAY()-1
  3. Нажмите Enter.
  4. При необходимости отформатируйте ячейку как дату через Главная → Формат → Формат ячеек (выберите нужный формат, например, 14.03.2026).
⚠️ Внимание: Если дата отображается как число (например, 45342), значит у ячейки установлен общий формат. Измените его на дата вручную.

Выделите ячейку с формулой|Убедитесь, что в строке формул отображается `=TODAY()-1`|Проверьте формат ячейки (должен быть "Дата")|Обновите лист клавишей `F9` — дата должна измениться на актуальную "вчерашнюю"-->

2. Статическая вчерашняя дата: как зафиксировать значение

Если вам нужно, чтобы вчерашняя дата не изменялась при пересчёте листа (например, для архивных записей), используйте комбинацию Ctrl+; (вставка текущей даты) с ручным вычитанием дня. Или примените этот трюк:

  1. Введите формулу =TODAY()-1 в нужную ячейку.
  2. Скопируйте ячейку (Ctrl+C).
  3. Щёлкните правой кнопкой по этой же ячейке и выберите Специальная вставка → Значения (или нажмите Ctrl+Alt+V → В).

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

  • 📊 Отчётов, где дата создания должна оставаться неизменной.
  • 📋 Логов действий (например, "Последнее редактирование: 13.03.2026").
  • 📅 Архивных данных, где важна историческая точность.

Альтернативный способ — использовать функцию =NOW()-1, но она вернёт дату и время. Чтобы оставить только дату, оберните её в =INT(NOW()-1) или отформатируйте ячейку как дата без времени.

3. Вчерашняя дата без выходных: функция WORKDAY()

Что делать, если вам нужна не просто вчерашняя дата, а последний рабочий день? Например, если сегодня понедельник, то "вчера" с точки зрения рабочих дней — это пятница. Для этого в Excel есть функция WORKDAY().

Синтаксис:

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

Чтобы получить вчерашний рабочий день, используйте:

=WORKDAY(TODAY(); -1)

Если у вас есть список праздников (например, в диапазоне D1:D10), добавьте его третьим аргументом:

=WORKDAY(TODAY(); -1; D1:D10)
Формула Результат (если сегодня 15.03.2026, пятница) Результат (если сегодня 18.03.2026, понедельник)
=TODAY()-1 14.03.2026 (четверг) 17.03.2026 (воскресенье)
=WORKDAY(TODAY(); -1) 14.03.2026 (четверг) 15.03.2026 (пятница)
=WORKDAY(TODAY(); -1; D1:D10) 14.03.2026 (если 14.03 не праздник) 13.03.2026 (если 15.03 был праздником)

Эта функция особенно полезна для:

  • 📈 Финансовых отчётов, где важны только рабочие дни.
  • 📦 Логистики (сроки доставки не считают выходные).
  • 🏢 HR-систем (отпуска, больничные).

Ежедневно|Несколько раз в неделю|Редко|Никогда-->

4. Автоматическое обновление даты при открытии файла

По умолчанию формулы в Excel пересчитываются при изменении данных или открытии файла. Но если у вас отключён автоматический пересчёт (например, для ускорения работы с большими файлами), дата может "застыть". Чтобы гарантированно обновлять вчерашнюю дату при каждом открытии, используйте VBA-макрос.

Инструкция:

  1. Нажмите Alt+F11, чтобы открыть редактор VBA.
  2. В окне Project дважды кликните по объекту ThisWorkbook.
  3. Вставьте этот код:
    Private Sub Workbook_Open()
    

    Sheets("Лист1").Range("A1").Value = Date - 1

    End Sub

    Замените "Лист1" на имя вашего листа, а "A1" — на нужную ячейку.
  4. Сохраните файл как .xlsm (с поддержкой макросов).

Теперь при каждом открытии файла в ячейке A1 будет автоматически проставляться вчерашняя дата. Этот метод подходит для:

  • 📅 Ежедневных отчётов, где дата должна фиксироваться при открытии.
  • 🔄 Шаблонов, где важна актуальность данных.
  • 🤖 Автоматизированных систем (например, логирование действий).
⚠️ Внимание: Макросы работают только в файлах с расширением .xlsm. Если сохранить файл как .xlsx, код не выполнится, а Excel покажет предупреждение о потере макросов.
Как отладить макрос, если он не работает?

1. Убедитесь, что макросы разрешены в настройках безопасности (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Настройки макросов).

2. Проверьте имя листа в коде — оно должно совпадать с реальным именем (с учётом регистра!).

3. Если файл открывается в защищённом режиме, макрос не выполнится. Разрешите редактирование при открытии.

4. Для отладки нажмите F8 в редакторе VBA, чтобы выполнить код по шагам.

5. Вчерашняя дата в Google Sheets: отличия от Excel

Если вы работаете в Google Таблицах, все описанные выше формулы будут работать, но есть нюансы:

  • 📱 Функция TODAY() в Google Sheets обновляется при каждом изменении листа (а не только при открытии файла, как в Excel).
  • ⏱️ Для принудительного пересчёта нажмите F9 или Shift+F9 (пересчёт текущего листа).
  • 🤖 Макросы в Google Sheets пишутся на Google Apps Script, а не на VBA. Пример кода для автоматической вставки вчерашней даты:
    function onOpen() {
    

    var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1");

    sheet.getRange("A1").setValue(new Date(new Date().setDate(new Date().getDate() - 1)));

    }

Чтобы в Google Sheets зафиксировать статическую вчерашнюю дату:

  1. Введите в ячейку =TODAY()-1.
  2. Скопируйте ячейку (Ctrl+C).
  3. Вставьте как Значения только (Ctrl+Shift+V).

Для рабочих дней используйте ту же функцию =WORKDAY(), но учтите, что в Google Sheets она может требовать указания праздников в отдельном диапазоне.

6. Распространённые ошибки и как их избежать

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

Ошибка Причина Решение
Дата отображается как число (например, 45342) Неверный формат ячейки Выделите ячейку → Главная → Формат → Формат ячеек → Дата
Формула не обновляется при открытии файла Отключён автоматический пересчёт Включите в Формулы → Параметры вычислений → Автоматически
#ИМЯ? в ячейке Опечатка в названии функции (например, TODAYY()) Проверьте синтаксис: правильно TODAY(), а не TODAY или DATE()
Макрос не работает Файл сохранён как .xlsx вместо .xlsm Сохраните файл с поддержкой макросов (Файл → Сохранить как → Тип файла: Книга Excel с поддержкой макросов (*.xlsm))
WORKDAY возвращает ошибку Не указан диапазон праздников (если они есть) Добавьте третий аргумент: =WORKDAY(TODAY(); -1; D1:D10), где D1:D10 — список праздников

Ещё одна типичная проблема — разница часовых поясов. Если ваш компьютер настроен на UTC, а отчётность ведётся по местному времени, дата может сбиваться. Чтобы этого избежать, используйте функцию =TODAY()-1+TIME(0;0;0) — она сбросит время к началу дня.

7. Продвинутые приёмы: динамические диапазоны и условное форматирование

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

Сценарий 1: Фильтрация данных по вчерашней дате

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

  1. Выделите диапазон данных (включая заголовки).
  2. Перейдите в Данные → Фильтр.
  3. Нажмите на стрелочку фильтра в колонке с датой и выберите Фильтры по дате → Настраиваемый фильтр.
  4. Установите условие: равно и введите формулу =TODAY()-1.

Сценарий 2: Выделение просроченных задач

Чтобы автоматически подсвечивать задачи с вчерашней (или более ранней) датой:

  1. Выделите диапазон с датами.
  2. Перейдите в Главная → Условное форматирование → Создать правило.
  3. Выберите Использовать формулу для определения форматируемых ячеек.
  4. Введите формулу:
    =A1<=TODAY()-1
    Где A1 — первая ячейка выделенного диапазона.
  5. Задайте формат (например, красный фон или шрифт).

Эти приёмы полезны для:

  • 📋 Систем управления задачами (Trello-подобные таблицы).
  • 📊 Дашбордов с индикаторами просрочки.
  • 📅 Календарей событий (выделение прошедших мероприятий).

FAQ: Частые вопросы о вчерашней дате в Excel

Можно ли вставить вчерашнюю дату без формул?

Да, но это будет статическое значение. Нажмите Ctrl+; (вставится текущая дата), затем вручную отнимите один день. Или используйте метод со специальной вставкой (описан в разделе 2).

Почему формула =TODAY()-1 показывает неправильную дату?

Вероятные причины:

  1. На компьютере неправильно установлена текущая дата/время (проверьте в системном трее).
  2. Файл Excel открыт в режиме Только для чтения — формулы не пересчитываются.
  3. В настройках Excel отключён автоматический пересчёт (Формулы → Параметры вычислений).
Как сделать так, чтобы вчерашняя дата обновлялась только один раз в день?

Используйте макрос с проверкой времени последнего обновления:

Private Sub Workbook_Open()

If Range("LastUpdate").Value <> Date Then

Range("A1").Value = Date - 1

Range("LastUpdate").Value = Date

End If

End Sub

Где LastUpdate — имя ячейки, хранящей дату последнего обновления (спрячьте её на отдельном листе).

Работает ли =TODAY()-1 в Excel Online?

Да, но с оговорками:

  • Формула обновляется при редактировании ячейки или листа.
  • Макросы VBA в Excel Online не поддерживаются.
  • Для принудительного пересчёта нажмите F9 (в браузере).
Можно ли получить вчерашнюю дату в формате "13 марта 2026 года"?

Да, используйте функцию =TEXT():

=TEXT(TODAY()-1; "d mmmm yyyy года")

Результат: 13 марта 2026 года. Другие форматы:

  • "dd.mm.yyyy"13.03.2026
  • "ddd, mmmm dd"ср, март 13