Винай использует лист Excel для ввода данных. Информация вводится в столбец A, и Vinay хотел бы иметь способ автоматически добавлять время в столбец B рядом со значением, введенным в столбце A, которое указывает, когда было введено значение.

Есть несколько способов выполнить эту задачу. Первый — вручную ввести время, выбрав соседнюю ячейку в столбце B и нажав Ctrl + Shift +; (это точка с запятой). Этот ярлык вводит текущее время в ячейку. Проблема с этим подходом, конечно, в том, что он не автоматический и требует дополнительных движений и нажатий клавиш.

Лучшим подходом было бы использовать формулу для ввода времени. Функция СЕЙЧАС возвращает текущую дату и время, и вы можете использовать их в ячейке следующим образом:

=NOW()

Конечно, эта простая формула обновляется каждый раз при пересчете таблицы. Это означает, что функция возвращает текущее время каждый раз, когда вы вводите значение в столбец A. Это нежелательно, потому что вы не хотите обновлять предыдущее время. Вы можете попробовать использовать формулу, чтобы проверить, есть ли что-то в столбце A, например:

=IF(A3="","",IF(B3="",NOW(),B3))

Проблема в том, что подобная формула вводит в рабочий лист круговую ссылку, что создает целый ряд проблем, с которыми нужно работать. Лучшим подходом является создание макроса, который автоматически запускается каждый раз, когда что-то вводится в столбец A. Щелкните правой кнопкой мыши вкладку рабочего листа, используемого для ввода данных, и выберите «Просмотреть код» в контекстном меню. Вы увидите окно кода для рабочего листа в редакторе Visual Basic, а затем введите его в окно:

Private Sub Worksheet_Change(ByVal Target As Excel.Range)

Dim rCell As Range     Dim rChange As Range          On Error GoTo ErrHandler     Set rChange = Intersect(Target, Range("A:A"))

If Not rChange Is Nothing Then         Application.EnableEvents = False         For Each rCell In rChange             If rCell > "" Then                 With rCell.Offset(0, 1)

.Value = Now                     .NumberFormat = "hh:mm:ss"

End With             Else                 rCell.Offset(0, 1).Clear             End If         Next     End If

ExitHandler:

Set rCell = Nothing     Set rChange = Nothing     Application.EnableEvents = True     Exit Sub ErrHandler:

MsgBox Err.Description     Resume ExitHandler End Sub

Когда макрос установлен, каждый раз, когда вы вводите что-либо в ячейку в столбце A, соседняя ячейка в столбце B будет содержать дату и время (отформатированные для отображения только времени). Если вы удалите что-то в столбце A, то соседняя ячейка в столбце B также будет очищена.

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (12811) применим к Microsoft Excel 2007, 2010 и 2013. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Recording_a_Data_Entry_Time [Запись времени ввода данных].