Способы фиксации и автообновления даты в таблицах Excel

Иван Корнев·21.05.2024·4 мин

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

Ниже рассмотрены все рабочие способы: от простых формул до продвинутых макросов.

Динамические функции: TODAY и NOW

Эти функции подходят для отчетов, где дата должна всегда соответствовать моменту просмотра документа (например, шапка «Дата формирования отчета»).

Функция СЕГОДНЯ()

Возвращает только текущую дату без времени. Значение пересчитывается каждый раз при открытии книги или изменении любых данных в листе.

Инструкция:

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

Если у вас английская версия Excel, используйте =TODAY(). Принцип работы идентичен.

Функция ТЕКУЩЕЕВРЕМЯ()

Возвращает дату и точное время. Обновляется при любом пересчете листа (даже при вводе данных в другую ячейку).

Инструкция:

  1. Введите формулу: =ТЕКУЩЕЕВРЕМЯ() (или =NOW()).
  2. Нажмите Enter.

Сравнение функций:

ФункцияЧто возвращаетКогда обновляетсяПример вывода
=СЕГОДНЯ()Только датаПри открытии файла или пересчете21.05.2024
=ТЕКУЩЕЕВРЕМЯ()Дата и времяПри любом изменении в книге21.05.2024 14:30

Функция ТЕКУЩЕЕВРЕМЯ() может сбивать сортировку или фильтрацию, так как значение меняется постоянно. Для логов событий лучше использовать статические методы или макросы.

Статическая вставка: Горячие клавиши

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

  • Только дата: Нажмите Ctrl + ; (точка с запятой).
  • Только время: Нажмите Ctrl + Shift + ;.
  • Дата и время: Нажмите Ctrl + ;, затем пробел, затем Ctrl + Shift + ;.

Введенное таким образом значение становится обычным текстом/числом и не изменяется со временем.

Автоматизация через макросы (VBA)

Для сложных задач, например, автоматической простановки даты в соседнюю ячейку при заполнении формы, потребуется макрос. Это позволяет создать «неизменяемый» лог действий.

Сценарий: При вводе данных в столбец B, в столбце C автоматически появляется текущая дата, которая больше не меняется.

  1. Нажмите Alt + F11, чтобы открыть редактор VBA.
  2. В окне проекта дважды кликните на нужный лист (например, Лист1).
  3. Вставьте следующий код:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim rng As Range
    Set rng = Intersect(Target, Me.Range("B:B")) ' Следим за столбцом B
    
    If Not rng Is Nothing Then
        Application.EnableEvents = False
        For Each cell In rng
            If cell.Value <> "" Then
                ' Ставим дату в соседнюю ячейку справа (столбец C)
                cell.Offset(0, 1).Value = Date
                cell.Offset(0, 1).NumberFormat = "dd.mm.yyyy"
            Else
                ' Очищаем дату, если удалили запись
                cell.Offset(0, 1).ClearContents
            End If
        Next cell
        Application.EnableEvents = True
    End If
End Sub
  1. Закройте редактор и сохраните файл в формате .xlsm (книга с поддержкой макросов).

Макросы должны быть включены в настройках безопасности Excel («Файл» → «Параметры» → «Центр управления безопасностью»), иначе код не сработает.

Настройка отображения формата даты

Часто после ввода формулы дата отображается в неудобном виде (например, числом 45433 или в американском формате 5/21/2024). Чтобы исправить это:

  1. Выделите ячейку с датой.
  2. Нажмите Ctrl + 1 (или правая кнопка мыши → Формат ячеек).
  3. Перейдите на вкладку ЧислоДата.
  4. Выберите нужный тип (например, 14.03.2012) или создайте свой в разделе (все форматы), введя код: дд.мм.гггг.

Частые ошибки

  • Дата не обновляется. Проверьте режим вычислений: вкладка «Формулы» → «Параметры вычислений» → должно стоять «Автоматически». Если стоит «Вручную», дата изменится только после нажатия F9.
  • Вместо даты видны решетки (#####). Ячейка слишком узкая. Просто расширьте столбец.
  • Макрос не срабатывает. Убедитесь, что файл сохранен как .xlsm, а не .xlsx. Также проверьте, не отключены ли события (Application.EnableEvents = False) другими макросами.

FAQ

Как сделать, чтобы дата вставлялась автоматически только при первом заполнении ячейки? Используйте макрос с проверкой: если ячейка с датой уже заполнена, не перезаписывать её. В коде выше это реализовано через проверку наличия значения, но для полной защиты от перезаписи нужно добавить условие If cell.Offset(0, 1).Value = "" Then.

Можно ли вставить дату в колонтитул автоматически? Да. Перейдите в «Вставка» → «Текст» → «Дата и время». Однако этот способ вставляет статическую дату на момент печати. Для динамической даты в колонтитуле при печати используйте код &[Дата] в настройке колонтитула страницы.

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