Donna需要保留她调度中心全天发生的活动日志。通过无线电打来的电话时,她需要记录谁,什么,为什么等等。她还需要记录打进电话的时间(24小时制)。Donna目前在纸上做这些事情。她想创建一个可以输入的工作表,并在将文本输入到该行旁边的单元格中后立即自动填充时间戳。当它旁边的单元格为空时,她希望自己的时间戳单元格为空白。这样,她可以节省检查时钟以记下时间的时间。

解决此问题时,我们假设您希望时间戳记进入A列,并且您将从B列开始输入“谁,什么,为什么”以及其他信息。最简单的方法是使用Excel的内置快捷方式输入当前时间:按Shift + Ctrl +; (这是一个分号)。如果该单元格的格式设置为以24小时制显示时间,则可以根据需要查看当前时间。

如果您想要一种更自动的方法,您可能会认为可以在A列中使用一个简单的公式,例如:

=IF(B2<>"", NOW(), "")

如果如果B列中的相应单元格包含某些内容,这将在A列中输入一个时间,但是由于NOW函数的工作方式,它不会给出令人满意的结果。请记住,该函数始终返回当前时间。因此,无论何时重新计算工作表,都将检查单元格B2的内容。如果那里有东西,那么将调用NOW函数,返回重新计算的当前时间。

这意味着包含该公式的A单元格列中显示的时间将始终在变化;这不是真正的时间戳记。

但是,您可以通过这种方式使A列中的公式更加复杂:

=IF(B2<>"", IF(A2="",NOW(),A2), "")

第一次输入时,由于公式是循环的,可能会出现错误。换句话说,该公式引用了放置该公式的单元格。 (在这种情况下,该公式进入单元格A2中,并且同时引用了单元格A2。)要使此公式正常工作,您需要执行以下步骤:

。显示“ Excel选项”对话框。 (在Excel 2007中,单击Office按钮,然后单击Excel选项。在Excel 2010或更高版本中,显示功能区的“文件”选项卡,然后单击“选项”。)

。单击屏幕左侧的“公式”。 (请参见图1。)

。确保选中“启用迭代计算”复选框。

。单击确定。

现在,无论何时将什么放入单元格B2中,时间都会自动输入到单元格A2中。但是,只有在单元格A2先前为空白的情况下,时间才会放在那里。如果不是(意味着它已经包含一个时间),则单元格A2的当前内容将保留在原位。

如果您不想允许循环引用(通过打开迭代计算),那么最好的方法是通过宏。

每当在B列中输入内容时,就可以使用Worksheet_Change事件自动在A列中输入时间。

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_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

链接:/ excelribbon-ExcelTipsMacros [点击此处在新的浏览器标签中打开该特殊页面]。

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

本技巧(13233)适用于Microsoft Excel 2007、2010、2013、2016、2019和Office 365中的Excel。