Работа с датами в Excel: от быстрой вставки до автоматизации

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

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

Статическая дата: фиксация момента ввода

Статическая дата необходима, когда важно зафиксировать момент совершения операции (например, дата отгрузки товара или регистрации клиента). Такое значение не изменится завтра или через месяц.

Самый быстрый способ — использование горячих клавиш:

  1. Выделите нужную ячейку.
  2. Нажмите Ctrl + ;.
  3. Нажмите Enter.

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

Чтобы вставить только текущее время, нажмите Ctrl + Shift + ;. Для ввода даты и времени одновременно введите дату (Ctrl + ;), поставьте пробел, затем введите время (Ctrl + Shift + ;).

Динамическая дата: автоматическое обновление

Если ваша задача — отображать актуальную дату «здесь и сейчас» (например, в шапке отчета или для расчета возраста), используйте встроенные функции. Они пересчитываются при любом изменении в книге или при её открытии.

Основные функции

ФункцияОписаниеПример результата
=СЕГОДНЯ()Возвращает только текущую дату. Время не учитывается.21.05.2024
=СЕЙЧАС()Возвращает текущую дату и точное время.21.05.2024 14:30

Как использовать:

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

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

Автоматическая фиксация даты при заполнении ячеек

Частая задача: дата должна проставляться автоматически в момент заполнения соседней ячейки (например, дата продажи появляется, когда вносится имя клиента), но после этого она должна «застыть» и не меняться. Стандартными формулами этого добиться нельзя, так как они всегда показывают «сегодня».

Для решения этой задачи есть два пути: простой (ручной) и продвинутый (макрос).

Способ 1: Копирование значений

Если данных немного, используйте ручной метод:

  1. Вставьте формулу =СЕГОДНЯ().
  2. Скопируйте ячейку (Ctrl + C).
  3. Вставьте её же на место, выбрав опцию Вставить значения (значок с цифрами 123 или через ПКМ -> Специальная вставка -> Значения). Формула исчезнет, останется только дата.

Способ 2: Использование макроса (VBA)

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

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

Частые ошибки и проблемы

При работе с датами пользователи часто сталкиваются с типовыми проблемами, которые легко исправить.

  • Вместо даты отображаются решетки (#####). Это означает, что ширина ячейки слишком мала для отображения формата даты. Просто расширьте столбец, потянув за границу заголовка.
  • Формула отображается как текст. Если вы видите =СЕГОДНЯ() вместо даты, проверьте формат ячейки. Он должен быть «Общий» или «Дата», а не «Текстовый». Также убедитесь, что перед знаком равенства нет пробела или апострофа.
  • Неверный формат даты (месяц и день перепутаны). Это зависит от региональных настроек Windows. Чтобы привести все даты к единому виду, выделите столбец, нажмите Ctrl + 1 и принудительно выберите нужный формат (например, ДД.ММ.ГГГГ).

FAQ

В чем разница между СЕГОДНЯ() и СЕЙЧАС()? Функция СЕГОДНЯ() возвращает только дату (время обнуляется до 00:00), а СЕЙЧАС() возвращает дату и точное время. Для расчетов периодов обычно удобнее использовать СЕГОДНЯ().

Как сделать, чтобы дата не сбивалась при открытии файла завтра? Используйте сочетание клавиш Ctrl + ; для вставки статической даты либо преобразуйте формулу в значение через «Специальную вставку». Формулы всегда будут показывать актуальную дату дня открытия.

Работают ли эти способы в онлайн-версии Excel? Горячие клавиши (Ctrl + ;) и формулы (=СЕГОДНЯ()) работают в веб-версии полностью. Однако макросы (VBA) в браузере не поддерживаются. Для автоматизации в онлайн-Excel придется использовать надстройку Office Scripts.