输入或导入不带冒号的时间(Microsoft Excel)
在单元格中输入时间时,Excel会在时间的小时和分钟部分之间键入冒号。但是,由于冒号在键盘上的位置,因此为您输入的每个时间值输入一个冒号会使您的速度变慢,尤其是在您要输入很多时间值的情况下。
因此,您可能想知道是否有一种方法可以跳过输入冒号,而让它们自动输入还是一次全部输入。
自动输入它们需要花费更多时间,需要使用宏,并且很快就会涉及。可以通过公式一次输入所有冒号,如下所示:
=TIMEVALUE(REPLACE(A1,3,0,":"))
此公式假定时间值(不带冒号)位于单元格A1中,并且由四位数字组成。因此,如果单元格A1包含诸如1422的值,则该公式将返回14:22作为实际时间值。 (您可能需要将单元格格式化为时间值。)
如果您的原始输入单元格可能包含仅使用三位数的时间,例如813而不是0813,那么您需要使用略有不同的公式:
=TIME(LEFT(A1,LEN(A1)-2),RIGHT(A1,2),0)
如果您希望自动插入冒号,则可以使用宏。您可以创建一个宏,该宏将检查计划在工作表中添加日期的单元格区域,然后在输入中插入冒号。这是通过创建由SheetChange事件触发的宏来完成的。以下宏就是这样的宏:
Private Sub Workbook_SheetChange(ByVal Sh As Object, _ ByVal Target As Excel.Range) Dim TimeStr As String On Error GoTo EndMacro If Application.Intersect(Target, Range("C7:D15")) Is Nothing Then Exit Sub End If If Target.Cells.Count > 1 Then Exit Sub End If If Target.Value = "" Then Exit Sub End If Application.EnableEvents = False With Target If .HasFormula = False Then Select Case Len(.Value) Case 1 ' e.g., 1 = 00:01 AM TimeStr = "00:0" & .Value Case 2 ' e.g., 12 = 00:12 AM TimeStr = "00:" & .Value Case 3 ' e.g., 735 = 7:35 AM TimeStr = Left(.Value, 1) & ":" & _ Right(.Value, 2) Case 4 ' e.g., 1234 = 12:34 TimeStr = Left(.Value, 2) & ":" & _ Right(.Value, 2) Case Else Err.Raise 0 End Select .Value = TimeValue(TimeStr) End If End With Application.EnableEvents = True Exit Sub EndMacro: MsgBox "You did not enter a valid time" Application.EnableEvents = True ActiveCell.Offset(-1, 0).Select End Sub
宏所做的第一件事是检查刚刚输入的数据是否在C7:D15范围内。如果不是,则宏退出。它还检查以确保仅选择了一个单元格,并且该单元格不为空。如果满足所有这些条件,则宏将检查单元格中值的长度,并在必要时用前导零填充。该宏基于在Chip Pearson网站上找到的宏,这里:
http://cpearson.com/excel/DateTimeEntry.htm
注意:
如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。
_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。
本技巧(2412)适用于Microsoft Excel 97、2000、2002和2003。可以在以下功能区中为Excel的功能区界面(Excel 2007及更高版本)找到本技巧的版本: