自动输入数据输入时间(Microsoft Excel)
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。