在 Excel 中以 mm:ss 格式输入时间数据(不带小时前的 0:)

在 Excel 中以 mm:ss 格式输入时间数据(不带小时前的 0:)

我想以 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。

这是一个解决方法以获得正确的计算值。

  1. 将单元格 A1(用户输入,例如12:33)格式化为[h]:mm
  2. =A1/60在单元格 B1 中输入公式
  3. 将单元格 B1 格式设置为[m]:ss

A1 和 B1 中显示的值应该相同。但是,B1 将是您想要的实际值

答案3

有解决方案!将此 VBA 代码放入您的工作表模块中,即:

  1. 打开 Visual Basic 编辑器 ( Alt- F11)
  2. 在左上角的树形视图中,双击要输入时间的工作表
  3. 在中央代码面板中,放置以下代码。
  4. 关闭 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”。您甚至可以在此之后添加总持续时间。

希望这可以帮助。

相关内容