Автоматическая вставка текущей даты в ячейку при вводе данных
Предположим, у нас имеется таблица заказов, куда пользователь вводит номер заказа, имя клиента, сумму и т.д. Необходимо сделать так, чтобы при внесении номера заказа в столбец А — в столбце B напротив введенного заказа автоматически появлялись дата и время его занесения:
Чтобы реализовать такой ввод даты, нам потребуется простой макрос, который надо добавить в модуль рабочего листа. Для этого щелкните правой кнопкой мыши по ярлычку листа с таблицей и выберите в контекстном меню команду Исходный текст (View code).
В открывшееся окно редактора Visual Basic скопируйте этот текст этого макроса:
Private Sub Worksheet_Change(ByVal Target As Range) For Each cell In Target 'проходим по всем измененным ячейкам If Not Intersect(cell, Range("A2:A100")) Is Nothing Then 'если изменененная ячейка попадает в диапазон A2:A100 With cell.Offset(0, 1) 'вводим в соседнюю справа ячейку дату .Value = Now .EntireColumn.AutoFit 'выполняем автоподбор ширины для столбца B, чтобы дата умещалась в ячейке End With End If Next cell End Sub
При необходимости измените «чувствительный» диапазон «А2:А100» на свой собственный. Если необходимо вставлять дату не в соседний столбец, а правее — подставьте в оператор Offset(0,1) вместо 1 число побольше.
Закройте редактор Visual Basic и попробуйте ввести что-нибудь в диапазон А2:А100. В соседней ячейке тут же появится текущая дата-время!
Ссылки по теме
- Как сделать выпадающий календарь для быстрого ввода любой даты мышью в любую ячейку.
- Как Excel работает с датами
- Что такое макрос, как он работает, куда копировать текст макроса, как запустить макрос?
- Информация о материале
- Категория: Макросы Excel
-
Опубликовано: 25 сентября 2013
Многие ведут реестры учета всевозможных документов в таблицах Excel, проставляя в них даты различных этапов согласования и подписания. При этом не все знают, что ввести текущую дату в ячейку Excel можно нажатием сочетания горячих клавиш. Кроме того, для этой же цели можно использовать макрос VBA.
Для быстрого ввода текущей даты в ячейку предусмотрено стандартное средство Excel — нажатие сочетания горячих клавиш Ctrl+; (либо Ctrl+Ж, кому как удобнее запомнить). В случае, если кому-то такое сочетание клавиш не вполне удобно, то можно сохранить в личной книге макросов процедуру (код которой приведен ниже) и закрепить ее за более удобным сочетанием клавиш, например Ctrl+d (о том как это сделать можно прочитать подробнее), а для того чтобы это сочетание срабатывало независимо от раскладки клавиатуры, можно сохранить не одну, а две идентичных процедуры и привязать их к разным сочетаниям клавиш, например одну к Ctrl+d, а другую к Ctrl+в.
Sub InsertDate() ' Вставка текущей даты в активную ячейку ' Сочетание клавиш: Ctrl+d ActiveCell.Value = Format(Now, "dd.mm.yyyy") End Sub '------------------------------------------------------- Sub Вставка_Даты() ' Вставка текущей даты в активную ячейку ' Сочетание клавиш: Ctrl+в ActiveCell.Value = Format(Now, "dd.mm.yyyy") End Sub
Для того чтобы текущая дата вставлялась не только в активную ячейку, но и во все выделенные ячейки, достаточно добавить цикл в программный код.
Sub InsertDate() ' Вставка текущей даты в активную ячейку ' Сочетание клавиш: Ctrl+d for each Cell in Selection Cell.Value = Format(Now, "dd.mm.yyyy") Next End Sub '------------------------------------------------------- Sub Вставка_Даты() ' Вставка текущей даты в активную ячейку ' Сочетание клавиш: Ctrl+в for each Cell in Selection Cell.Value = Format(Now, "dd.mm.yyyy") Next End Sub
Для того, чтобы перенести этот программный код на свой компьютер, наведите курсор мыши на поле с программным кодом, нажмите на одну из двух кнопкок в правом верхнем углу этого поля, скопируйте программный код и вставьте его в модуль проекта на своем компьютере (подробнее о том, как сохранить программный код макроса).
Другие материалы по теме:
Автоматическая запись текущей даты и времени в первую ячейку новой строки базы данных на листе Excel с помощью кода VBA при выборе второй ячейки этой строки.
Если в базу данных, организованную на листе Excel, приходится ежедневно вносить несколько десятков записей, просто необходимо обеспечить возможность автоматического заполнения первой ячейки каждой новой записи текущей датой (если, конечно, текущая дата предусмотрена в вашей базе данных). И, конечно, первому столбцу, в который будет записываться дата, необходимо задать подходящий формат отображения даты и, если нужно, времени.
Самый простой код для записи даты
Для автоматической записи текущей даты и времени в первую ячейку очередной записи базы данных на листе Excel, необходимо открыть редактор VBA Excel и в проводнике дважды кликнуть на листе с базой данных, чтобы открылся модуль листа, в который поместить следующую процедуру с проверкой условия, что ячейка выбрана именно во втором столбце:
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 Then Cells(ActiveCell.Row, 1) = Now End Sub |
При выборе ячейки во втором столбце таблицы, в первую ячейку автоматически записываются текущие дата и время. Записываются они независимо от того, занята первая ячейка или пустая, если она не пустая, то значение перезаписывается. Чтобы случайно не перезаписать нужную дату, случайно выбрав вторую ячейку уже заполненной записи внутри таблицы, необходимо добавить дополнительное условие, как в коде ниже.
Добавление второго условия в процедуру
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 And Cells(ActiveCell.Row, 1) = 0 Then Cells(ActiveCell.Row, 1) = Now End If End Sub |
При выборе второй ячейки заполняемой строки, если первая ячейка пуста, в неё автоматически записываются текущие дата и время. Если ячейка не пуста, то перезаписи значения не произойдет. Но, в данном случае, при выборе ячейки во втором столбце ниже первой пустой строки, дата будет также записываться в первую ячейку, что не совсем удобно.
Запись текущей даты с учетом трех условий
Можно добавить еще условие, при котором текущая дата будет записываться, если только ячейка в первом столбце и строкой выше непустая.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 And Cells(ActiveCell.Row, 1) = 0 _ And Cells(ActiveCell.Row — 1, 1) <> 0 Then Cells(ActiveCell.Row, 1) = Now End If End Sub |
Вариант для практического использования
Если использовать предыдущую процедуру, то при выборе любой ячейки в первой строке генерируется ошибка. Она возникает из-за того, что, когда выбрана ячейка в первой строке, ячейки Cells(ActiveCell.Row — 1, 1) не существует. Чтобы избежать этой ошибки, необходимо добавить в первую группу условий проверку на то, что индекс строки выбранной ячейки не равен единице, а проверку ячейки Cells(ActiveCell.Row — 1, 1) вынести во второй блок If … End If, который будет выполняться только при выполнении условий первого блока.
Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Target.Column = 2 And Target.Row > 1 And _ Cells(ActiveCell.Row, 1) = 0 Then If Cells(ActiveCell.Row — 1, 1) <> 0 Then Cells(ActiveCell.Row, 1) = Now End If End If End Sub |
Эту процедуру можно использовать на практике. Автоматическая запись текущей даты и времени происходит при выборе именно второй ячейки новой строки, чтобы можно было сразу начать заполнять эту ячейку, не совершая перед этим лишнего действия по ее выбору.
0 / 0 / 0
Регистрация: 11.01.2016
Сообщений: 9
1
11.01.2016, 22:10. Показов 9027. Ответов 24
Здравствуйте. Помогите в следующем вопросе — в MS EXCEL 2007 создал кнопку с макросом на удаление данных с определенных ячеек.
Visual Basic | ||
|
Нужно что бы при нажатии этой кнопки вставлялась нынешняя дата, формата чч/мм/гг, без дальнейших изменений (например при открытии листа числом позже) в ячейку A2.
Нашел в интернете такой код:
PureBasic | ||
|
Но при вставке в код кнопки ничего не выходит. Ноль эмоций. (может его куда-нибуть в другое место нужно вставлять?)
Ячейки все будут защищены от изменений, кроме тех которые очищает макрос данный выше.
Как можно реализовать такую функцию: при нажатии кнопки «Очистить» вставляется дата в защищенную ячейку A2 без дальнейшей возможности изменения по средством ручного редактирования формулы или открытия листа в другие дни.
С VB не очень дружу, или не дружу вовсе.
0
В Excel вставка даты и отметки времени — обычная операция. В этом руководстве я расскажу о нескольких методах ручной или автоматической вставки даты и времени в ячейки Excel, указав разные случаи.
Вставьте дату и время с помощью ярлыков
Вставить дату и метку времени с формулой
Формула для автоматической вставки отметки времени при вводе данных в другой столбец
VBA для автоматической вставки метки времени при вводе данных в другой столбец
Вставьте дату и время с помощью ярлыков
Если вам просто нужно вставить дату и время в несколько ячеек, вы можете вручную вставить их, нажав ярлыки.
Вставить текущую дату: Control
+ :
Вставить текущее время: Shift + Control
+ :
Смотрите скриншот:
Советы:
1. Вы можете отформатировать выходные данные как форматы даты или времени, как вам нужно в Формат ячеек Диалог.
2. Если у вас есть Kutools for Excel, вы можете вставить текущую дату или другие даты в указанном формате даты, как вам нужно, с его Вставить дату функции. Нажмите, чтобы скачать бесплатно
Вставить дату и метку времени с формулой
Если вы хотите вставить дату или метку времени, которые могут обновляться автоматически, вы можете использовать приведенные ниже формулы.
Вставить текущую дату
= СЕГОДНЯ ()
Нажмите Enter ключ, а в ячейку вставляется текущая дата.
Вставить текущее время :
= СЕЙЧАС ()
Нажмите клавишу Enter, и текущая дата и время будут вставлены в ячейку.
Советы:
1. Вы можете отформатировать выходные данные как форматы даты или времени, как вам нужно в Формат ячеек диалог. Например, вы хотите отображать только текущее время, просто отформатируйте ячейку как время после использования = СЕЙЧАС () формула
2. Если вы хотите вставить текущую дату и время в верхний или нижний колонтитул рабочего листа, вы можете использовать Вставить информацию о книге Функция Kutools for Excel чтобы быстро справиться с этой работой. Нажмите, чтобы скачать бесплатно
Формула для автоматической вставки отметки времени при вводе данных в другой столбец
Предположим, есть два столбца, столбец A и столбец B, теперь вы хотите вставить текущую метку времени в столбец B при вводе данных в столбец A, как вы можете это сделать?
Автоматическая вставка метки времени при вводе данных
1. Сначала нажмите Файл > Опции для открытия Параметры Excel диалога, выберите Формулы на левой панели, затем отметьте Включить итеративный расчет in Варианты расчета группа. И нажмите OK.
2. В столбце B, например, ячейка B1, введите эту формулу.
= ЕСЛИ (A1 <> «», ЕСЛИ (B1 <> «», B1, СЕЙЧАС ()), «»)
затем перетащите дескриптор автозаполнения вниз к ячейкам.
3. Затем отформатируйте ячейки формулы в формате даты и времени, как вам нужно, в Формат ячеек диалоговое окно: оставьте выделенными ячейки формулы, щелкните правой кнопкой мыши, чтобы отобразить контекстное меню, выберите Формат ячеек, то Формат ячеек появляется диалоговое окно в На заказ раздел, который под Число на вкладке введите нужный формат в поле Тип текстовое поле и щелкните OK.
Теперь, когда вы вводите данные в столбец A, текущее datetime будет вставлено в столбец B.
Автоматическая вставка и обновление метки времени при изменении ячейки в другом столбце
Если вы хотите автоматически вставлять метку времени при вводе ячейки, и в то же время, если запись изменяется, вставленная метка времени будет обновлена, вы можете использовать следующую формулу:
=IF(A1<>»»,IF(AND(B1<>»»,CELL(«address»)=ADDRESS(ROW(A1),COLUMN(A1))),NOW(),IF(CELL(«address»)<>ADDRESS(ROW(A1),COLUMN(A1)),B1,NOW())),»»)
A1 — это ячейка, в которую вы будете вводить данные, B1 — это ячейка формулы, в которую вы хотите вставить метку времени.
Перетащите маркер автозаполнения вниз по используемым ячейкам.
Затем отформатируйте ячейки формулы как формат даты и времени, как вам нужно, в Формат ячеек диалоговое окно: оставьте выделенными ячейки формулы, щелкните правой кнопкой мыши, чтобы отобразить контекстное меню, выберите Формат ячеек, то Формат ячеек появляется диалоговое окно в На заказ раздел, который под Число на вкладке введите нужный формат в поле Тип текстовое поле, щелкните OK.
VBA для автоматической вставки метки времени при вводе данных в другой столбец
Если вы знакомы с кодом VBA, вы можете сделать следующее:
1. Щелкните правой кнопкой мыши вкладку рабочего листа, которую вы используете, затем выберите Просмотреть код из контекстного меню.
2. Затем в Microsoft Visual Basic для приложений окно, вставьте ниже код.
VBA: автоматическая вставка метки времени
Private Sub Worksheet_Change(ByVal Target As Range)
'UpdatebyKutools20190919
Dim xRInt As Integer
Dim xDStr As String
Dim xFStr As String
On Error Resume Next
xDStr = "A" 'Data Column
xFStr = "B" 'Timstamp Column
If (Not Application.Intersect(Me.Range(xDStr & ":" & xDStr), Target) Is Nothing) Then
xRInt = Target.Row
Me.Range(xFStr & xRInt) = Format(Now(), "mm/dd/yyyy hh:mm:ss")
End If
End Sub
3. Затем сохраните этот код. С этого момента, пока вы вводите данные или изменяете данные в столбце A, новая метка времени будет вставляться в столбец B.
Внимание: вы можете изменить столбцы A и B и формат времени мм / дд / гггг чч: мм: сс в коде VBA в соответствии с вашими реальными потребностями.
Если вы хотите использовать определенную функцию, вы можете сделать следующее:
1. Держать Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно. И нажмите Вставить > Модули чтобы вставить пустой модуль.
2. Вставьте приведенный ниже код в новый модуль. Затем сохраните код и вернитесь к рабочему листу.
Function FormatDate(xRg As Range)
'UpdatebyKutools20190919
On Error GoTo Err_01
If xRg.Value <> "" Then
FormatDate = Format(Now, "mm/dd/yyyy hh:mm:ss")
Else
FormatDate = ""
End If
Exit Function
Err_01:
FormatDate = "Error"
End Function
3. В ячейку, в которую будет вставлена метка времени, введите эту формулу.
= FormatDate (F1)
F1 — это ячейка, в которую вы будете вводить или изменять данные. Затем перетащите дескриптор автозаполнения вниз к ячейкам.
Теперь текущее datetime будет вставлено, если в ячейку F1 введены данные или обновлены.
Другие операции (статьи), относящиеся к DateTime
Преобразование даты, сохраненной в виде текста, в дату в Excel
Иногда, когда вы копируете или импортируете даты из других источников данных в ячейку Excel, дата может быть отформатирована и сохранена как текст. И здесь я расскажу о приемах преобразования таких дат, хранящихся в виде текста, в стандартные даты в Excel.
Добавить / вычесть полгода / месяц / час к дате или времени в Excel
Добавление года, месяца или часа к дате или времени — обычное дело в нашей повседневной работе в Excel. Вы когда-нибудь пробовали добавить полгода, месяц или час к дате или времени? Здесь я расскажу, как справиться с этой работой.
Средние временные метки дня в Excel
Например, вы записали временные метки входа в систему каждый раз, когда конкретный пользователь заходил на веб-сайт в Excel, и теперь вы хотите усреднить эти временные метки для прогнозирования наиболее вероятного времени, когда эти пользователи будут заходить на веб-сайт в будущем, как вы могли бы это сделать ?
Рассчитать часы между временем после полуночи в Excel
Предположим, у вас есть расписание для записи рабочего времени, время в столбце A — это время начала сегодняшнего дня, а время в столбце B — время окончания следующего дня. Обычно, если вы вычисляете разницу во времени между этими двумя временами прямо минус «= B2-A2», он не будет отображать правильный результат.
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы и хранение данных; Разделить содержимое ячеек; Объедините повторяющиеся строки и сумму / среднее значение… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Избранные и быстро вставляйте формулы, Диапазоны, диаграммы и изображения; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Группировка сводной таблицы по номер недели, день недели и другое … Показать разблокированные, заблокированные ячейки разными цветами; Выделите ячейки, у которых есть формула / имя…
Вкладка Office — предоставляет интерфейс с вкладками в Office и значительно упрощает вашу работу
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!