Vinay使用Excel工作表进行数据输入。在A列中输入信息,Vinay希望有一种自动在B列中添加时间的方法,该时间与A列中输入的值相邻,指示何时输入该值。

有几种不同的方法可以完成此任务。第一种是通过选择B列中的相邻单元格并按Ctrl + Shift +来手动输入时间。 (这是分号)。该快捷方式在单元格中输入当前时间。当然,这种方法的问题在于它不是自动的,并且需要一些额外的动作和击键才能实现。

更好的方法是使用公式输入时间。 NOW函数返回当前日期和时间,您可以通过以下方式在单元格中使用它:

=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列中的相邻单元格也会被清除。

同样,请注意,您可以更改NumberFormat属性的设置以反映您希望日期显示的方式。例如,您可以通过将“ hh:mm:ss”更改为“ h:mm:ss AM / PM”来更改为十二小时的时间格式。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(3116)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: