我想以 mm:ss 格式将时间数据输入 excel 表。问题是 - 尽管单元格格式是 mm:ss,但如果我输入如下数据:
12:33 存储的实际值是 12 小时 33 分钟。如果我想要 12 分 33 秒,我需要输入 0:12:33
有没有办法让单元格接受 12:33 作为 mm:ss ?
答案1
时间普遍采用“时:分:秒”格式输入,因此您无法更改此输入格式。您显然可以更改显示格式,但不幸的是,您需要遵守输入格式。
答案2
正如所回答的那样史蒂夫,Excel 将用户输入解释12:33
为 12h33m。您无法更改 Excel 接受用户输入的这种行为。
正如您在评论中提到的,用户会输入12:33
但意思是 12m33s。
这是一个解决方法以获得正确的计算值。
- 将单元格 A1(用户输入,例如
12:33
)格式化为[h]:mm
=A1/60
在单元格 B1 中输入公式- 将单元格 B1 格式设置为
[m]:ss
A1 和 B1 中显示的值应该相同。但是,B1 将是您想要的实际值。
答案3
有解决方案!将此 VBA 代码放入您的工作表模块中,即:
- 打开 Visual Basic 编辑器 ( Alt- F11)
- 在左上角的树形视图中,双击要输入时间的工作表
- 在中央代码面板中,放置以下代码。
- 关闭 VBE
使用此代码:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Value < 0 Or Target.Value > 1 And Target.NumberFormat <> "h:mm" Then Exit Sub
Application.EnableEvents = False
Target.Value = Target.Value / 60
Target.NumberFormat = "mm:ss"
Application.EnableEvents = True
End Sub
如果您已经格式化了输入数据的范围,请使用此行作为第一行:
If Target.Value < 0 Or Target.Value > 1 Then Exit Sub
请注意,每次输入时间或介于 0 和 1 之间的值时,这都会改变值和格式!如果要将其限制在某一列,请添加以下行:
If Target.Column <> 3 Then Exit Sub
或者用这一行来限制它到某个范围内
If Intersect(Target, Range("A2:A100") Is Nothing Then Exit Sub
答案4
突出显示要作为持续时间的单元格/列,右键单击鼠标以“设置单元格格式”。转到“自定义”,如果要以小时和分钟格式输入持续时间,请查找“h:mm”。如果您还想包括秒,请单击“h:mm:ss”。您甚至可以在此之后添加总持续时间。
希望这可以帮助。