Как в Excel сделать, чтобы дата проставлялась автоматически: 5 рабочих методов

Работа с датами в Microsoft Excel — одна из самых востребованных задач при ведении отчётности, планировании или аналитике. Но ручной ввод текущей даты в сотни ячеек отнимает время и увеличивает риск ошибок. К счастью, в Excel есть несколько способов автоматизировать этот процесс — от простых формул до продвинутых макросов. В этой статье разберём 5 проверенных методов, которые позволят проставлять дату автоматически при открытии файла, изменении данных или выполнении определённых условий.

Вы узнаете, как:

  • 📅 Настроить автоматическое обновление даты при каждом открытии книги
  • ⏱️ Фиксировать дату последнего изменения ячейки или листа
  • 🔄 Использовать условные формулы для динамической простановки дат
  • 🖥️ Применять VBA-скрипты для сложной автоматизации
  • ⚙️ Избежать typical ошибок, которые ломают логику работы с датами

Методы подойдут для Excel 2010–2026 (включая Microsoft 365) и не требуют установки дополнительных надстроек. Если вы никогда не работали с формулами или макросами — не беспокойтесь: мы дадим пошаговые инструкции с картинками и объяснениями «на пальцах».

📊 Как часто вы работаете с датами в Excel?
Ежедневно
Несколько раз в неделю
Редее чем раз в месяц
Никогда не использовал автоматизацию

1. Самый простой способ: функция СЕГОДНЯ() для текущей даты

Если вам нужно, чтобы в ячейке всегда отображалась актуальная дата на сегодня (и обновлялась при каждом открытии файла), используйте функцию СЕГОДНЯ() (или TODAY() в английской версии). Это базовый метод, который не требует навыков программирования.

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

  1. Выделите ячейку, где должна отображаться дата.
  2. Введите формулу:
    =СЕГОДНЯ()
  3. Нажмите Enter.

Теперь при каждом открытии файла дата будет автоматически обновляться. Важно: функция не фиксирует дату изменения ячейки — она показывает только текущую системную дату.

2. Фиксация даты последнего изменения ячейки (без VBA)

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

Инструкция:

  1. Выделите ячейку, где должна фиксироваться дата (например, B2).
  2. Введите формулу:
    =ЕСЛИ(A2<>"";ЕСЛИ(B2="";СЕГОДНЯ();B2);"")

    Здесь A2 — ячейка, изменения в которой мы отслеживаем, а B2 — ячейка с датой.

  3. Нажмите Enter. Excel выдаст предупреждение о циклической ссылке — игнорируйте его и нажмите ОК.
  4. Включите итеративные вычисления: Файл → Параметры → Формулы → Установите флажок "Включить итеративные вычисления".

Теперь при изменении ячейки A2 в B2 будет автоматически проставляться текущая дата, а при повторных изменениях — сохраняться прежняя.

⚠️ Внимание: Этот метод работает только при включённых итеративных вычислениях. Если вы откроете файл на другом компьютере, где они отключены, формула перестанет обновляться.

3. Автоматическая дата при открытии файла (с помощью VBA)

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

Следуйте инструкции:

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В окне Project найдите вашу книгу (например, Book1) → откройте раздел ThisWorkbook.
  3. Вставьте следующий код:
    Private Sub Workbook_Open()
    

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

    End Sub

    Здесь "Лист1" — название листа, а "A1" — ячейка для даты.

  4. Сохраните файл как Книга Excel с поддержкой макросов (*.xlsm).

Теперь при каждом открытии файла в ячейке A1 будет автоматически проставляться текущая дата. Чтобы изменить ячейку или лист, просто отредактируйте код.

Сохраните резервную копию файла|Включите макросы в настройках Excel (Файл → Параметры → Центр управления безопасностью → Параметры центра управления безопасностью → Включить все макросы)|Проверьте, что файл сохранён в формате *.xlsm|Закройте и снова откройте файл, чтобы проверить работу макроса-->

4. Условная простановка даты (если выполнено условие)

Иногда дату нужно проставлять только при выполнении определённого условия. Например, когда статус задачи меняется на «Выполнено» или когда значение в ячейке превышает порог. Для этого используйте комбинацию функций ЕСЛИ() и СЕГОДНЯ().

Пример 1: Проставляем дату, если задача выполнена.

  • 📌 В ячейке A2 — статус задачи (например, «В работе» или «Выполнено»).
  • 📅 В ячейке B2 введите формулу:
    =ЕСЛИ(A2="Выполнено";ЕСЛИ(B2="";СЕГОДНЯ();B2);"")

    Дата зафиксируется только при первом изменении статуса на «Выполнено».

Пример 2: Дата проставляется, если значение в ячейке > 100.

  • 📌 В ячейке C2 — числовое значение.
  • 📅 В ячейке D2 введите:
    =ЕСЛИ(C2>100;СЕГОДНЯ();"")

    Обратите внимание: эта дата будет обновляться ежедневно, если условие остаётся истинным.

Задача Формула Пример результата
Дата при смене статуса =ЕСЛИ(A2="Готово";ЕСЛИ(B2="";СЕГОДНЯ();B2);"") Если A2 изменится на «Готово», в B2 появится текущая дата
Дата при превышении лимита =ЕСЛИ(C2>500;СЕГОДНЯ();"") Если C2 = 600, ячейка покажет сегодняшнюю дату
Дата последнего обновления =ЕСЛИ(D2<>"";D2;СЕГОДНЯ()) Фиксирует дату только при первом вводе данных в D2
⚠️ Внимание: Формулы с СЕГОДНЯ() пересчитываются при каждом открытии файла или изменении листа. Если вам нужно зафиксировать дату навсегда после первого срабатывания условия, используйте VBA (см. следующий раздел).

5. Продвинутая автоматизация: VBA для фиксации даты по событию

Если вам нужно однократно зафиксировать дату при изменении ячейки (и не обновлять её в будущем), стандартные формулы не подойдут — потребуется VBA. Этот метод идеален для логов изменений, где важно сохранить историю.

Пример кода для фиксации даты при изменении ячейки A1:

  1. Нажмите Alt + F11 → откройте лист с ячейкой A1 (например, Лист1).
  2. Вставьте код:
    Private Sub Worksheet_Change(ByVal Target As Range)
    

    If Not Intersect(Target, Range("A1")) Is Nothing Then

    Range("B1").Value = Date

    End If

    End Sub

    Здесь B1 — ячейка, куда будет записываться дата.

  3. Сохраните файл как .xlsm.

Теперь при каждом изменении A1 в B1 будет проставляться текущая дата однократно. Если вы измените A1 ещё раз, дата в B1 обновится.

Как зафиксировать дату навсегда (без обновлений)

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

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("A1")) Is Nothing Then

If Range("B1").Value = "" Then

Range("B1").Value = Date

End If

End If

End Sub

Теперь дата запишется в B1 только один раз, даже если A1 будет изменяться многократно.

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

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

  • Дата не обновляется:
    — Убедитесь, что в настройках Excel включены автоматические вычисления (Формулы → Вычисления → Автоматически).
    — Для формул с СЕГОДНЯ() проверьте, что файл сохранён и переоткрыт.
  • Формула возвращает ошибку #ИМЯ?:
    — Проверьте правильность написания функции (например, СЕГОДНЯ, а не СЕГОДНЯЯ).
    — Убедитесь, что используется русская версия Excel (или замените на TODAY() для английской).
  • Макрос не работает:
    — Проверьте, что файл сохранён в формате .xlsm, а не .xlsx.
    — Включите макросы в настройках безопасности Excel.
  • Дата сбрасывается при копировании:
    — Используйте специальную вставку (Вставить → Значения), чтобы вставить только результат формулы, а не саму формулу.

Если вы используете Google Таблицы, учтите, что там нет функции СЕГОДНЯ() — вместо неё применяется =TODAY(). Также в Google Таблицах нет VBA, но аналогичную логику можно реализовать через Apps Script.

FAQ: Частые вопросы об автоматических датах в Excel

Можно ли сделать так, чтобы дата проставлялась только один раз и не менялась?

Да, для этого нужно использовать VBA. Стандартные формулы (вроде СЕГОДНЯ()) обновляют дату при каждом пересчёте. Пример кода для однократной фиксации:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address = "$A$1" And Range("B1") = "" Then

Range("B1").Value = Date

End If

End Sub

Этот макрос запишет дату в B1 только при первом изменении A1.

Почему функция СЕГОДНЯ() показывает вчерашнюю дату?

Скорее всего, у вас отключены автоматические вычисления. Перейдите в Формулы → Вычисления → Автоматически. Также проверьте системную дату на компьютере — Excel берёт её оттуда.

Как проставить дату в формате "05 мая 2026 г."?

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

  1. Выделите ячейку с датой.
  2. Нажмите Ctrl + 1 (или правая кнопка → Формат ячеек).
  3. Выберите категорию Дата и укажите формат 14 марта 2012 г..

Альтернативно, используйте функцию =ТЕКСТ(СЕГОДНЯ();"ДД ММММ ГГГГ г.").

Можно ли автоматически проставлять время вместе с датой?

Да, для этого используйте функцию ТДАТА() (или NOW() в английской версии). Она возвращает текущие дату и время. Пример:

=ТДАТА()

Чтобы отформатировать вывод, используйте Формат ячеек → Дата → 14.03.2012 13:30.

Как сделать автодату в Google Таблицах?

В Google Таблицах нет VBA, но есть альтернативы:

  • 📅 Для текущей даты: =TODAY().
  • 🕒 Для даты и времени: =NOW().
  • 🔄 Для фиксации даты по условию: используйте Apps Script (аналог VBA). Пример скрипта:
    function onEdit(e) {
    

    if (e.range.getA1Notation() == 'A1') {

    e.range.offset(0, 1).setValue(new Date());

    }

    }