Автоматический ввод времени ввода данных (Microsoft Excel)
Донне необходимо вести журнал действий, которые произошли в течение дня в ее диспетчерском центре. Когда поступает звонок по радио, ей нужно задокументировать, кто, что, почему и т. Д. Ей также нужно задокументировать время (в 24-часовом формате), когда был получен звонок. Донна в настоящее время делает все это на бумаге. Она хотела бы создать рабочий лист, на котором она могла бы печатать, и чтобы метка времени автоматически заполнялась, как только она вводит текст в ячейку рядом с ней в этой строке. Когда ячейка рядом с ней пуста, она хочет, чтобы ее ячейка с отметкой времени была пустой. Таким образом, она сможет сэкономить время, сверив часы и записывая время.
Подходя к этой проблеме, давайте предположим, что вы хотите, чтобы отметка времени находилась в столбце A, и вы будете вводить «кто, что, почему» и другую информацию, начиная со столбца B. Самый простой способ сделать это — это используйте встроенный ярлык Excel для ввода текущего времени: нажмите Shift + Ctrl +; (это точка с запятой). Если ячейка отформатирована для отображения времени в 24-часовом формате, вы увидите текущее время, как хотите.
Если вам нужен более автоматический подход, вы можете подумать, что можете использовать простую формулу в столбце A, например такую:
=IF(B2<>"", NOW(), "")
Хотя это приведет к вводу времени в столбец A, если соответствующая ячейка в столбце B что-то содержит, это не даст удовлетворительных результатов из-за того, как работает функция NOW. Помните, что функция всегда возвращает текущее время. Таким образом, каждый раз, когда рабочий лист пересчитывается, содержимое ячейки B2 проверяется. Если там что-то есть, то вызывается функция NOW, возвращающая текущее время пересчета.
Это означает, что время, указанное в столбце A, ячейка, содержащая эту формулу, всегда будет изменяться; это не будет точная отметка времени.
Однако вы можете немного усложнить формулу в столбце A следующим образом:
=IF(B2<>"", IF(A2="",NOW(),A2), "")
В самый первый раз, когда вы введете это значение, скорее всего, вы получите ошибку, потому что формула круговая. Другими словами, формула ссылается на ячейку, в которую она помещена. (В этом случае формула входит в ячейку A2 и также ссылается на ячейку A2.) Чтобы эта формула работала правильно, необходимо выполнить следующие действия:
-
Откройте диалоговое окно «Параметры Excel». (В Excel 2007 нажмите кнопку «Офис», а затем — «Параметры Excel. В Excel 2010 или более поздних версиях откройте вкладку« Файл »на ленте, а затем нажмите« Параметры ».)
-
Щелкните Формулы в левой части экрана. (См. Рис. 1.)
-
Убедитесь, что установлен флажок Включить итеративное вычисление.
-
Щелкните ОК.
Теперь, когда вы что-то помещаете в ячейку B2, время автоматически вводится в ячейку A2. Однако время указывается только в том случае, если ячейка A2 ранее была пустой. Если это не так (это означает, что он уже содержит время), то текущее содержимое ячейки A2 остается на месте.
Если вы не хотите разрешать циклические ссылки (путем включения итеративных вычислений), то лучшим подходом будет использование макроса.
Вы можете использовать событие Worksheet_Change для автоматического ввода времени в столбец A всякий раз, когда что-то вводится в столбец B.
Private Sub Worksheet_Change(ByVal Target As Range) Dim rInt As Range Dim rCell As Range Dim tCell As Range Set rInt = Intersect(Target, Range("B:B")) If Not rInt Is Nothing Then For Each rCell In rInt Set tCell = rCell.Offset(0, -1) If IsEmpty(tCell) Then tCell = Now tCell.NumberFormat = "mmm d, yyyy hh:mm" End If Next End If End Sub
Чтобы настроить макрос, щелкните правой кнопкой мыши вкладку рабочего листа и выберите «Просмотреть код». Затем вы можете поместить макрос в отображаемое окно кода. (Это помещает макрос в модуль ThisWorksheet, который является обязательным, поскольку это обработчик событий, который выполняется всякий раз, когда что-то изменяется на рабочем листе.)
Макрос проверяет, действительно ли что-то вводится в столбец B. Если это так, тогда для переменной tCell устанавливается соответствующая ячейка в столбце A. Если в этой ячейке ничего уже нет, то там помещаются текущая дата и время. . Если вам просто нужно время, измените внутреннюю часть макроса на это:
tCell = Time tCell.NumberFormat = "hh:mm"
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (13233) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365.