Excel - 以 mm:ss.00 格式输入时间长度(不带小时或冒号)

Excel - 以 mm:ss.00 格式输入时间长度(不带小时或冒号)

我正在尝试创建一个 Excel 电子表格,以便记录参赛选手的比赛时间。我需要展示,mm:ss.00并且我希望能够做到这一点而无需输入冒号或小时数。

我已经在 VBA 中尝试过此代码,效果很好,但是它只显示mm:ss不分秒。有人知道我该如何编辑此代码以包含分秒吗?

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Intrsct As Range, Cell As Range, s As String
    Dim mins As Long, secs As Long, t As Date

    Set Intrsct = Intersect(Range("G13:G104"), Target)
    If Intrsct Is Nothing Then Exit Sub

    Application.EnableEvents = False
        For Each Cell In Intrsct
            s = Cell.Text
            If s = "" Then
                Cell.NumberFormat = "@"
            ElseIf Len(s) > 4 Then
                Cell.Clear
                Cell.NumberFormat = "@"
             Else
                s = Right("0000" & s, 4)
                If s Like "####" Then
                    mins = CLng(Left(s, 2))
                    secs = CLng(Right(s, 2))
                    t = TimeSerial(0, mins, secs)
                    Cell.NumberFormat = "[mm]:ss"
                    Cell.Value = t
                Else
                    Cell.Clear
                    Cell.NumberFormat = "@"
                End If
            End If
        Next Cell
    Application.EnableEvents = True
End Sub

答案1

使用以下自定义格式来格式化您的单元格00\:00\.00

结果 - mm:ss.00,不带小时或冒号

答案2

它似乎TimeSerial功能只接受整数值作为参数,因此不能在此处传递秒数。同样适用于工作表函数TIME

但时间以以下格式表示为数字:

Hours/24 + Minutes/(24*60) + Second/(24*60*60)

因此,如果您得到这个数字,您可以使用带有第二个分数的自定义格式!(在屏幕截图中mm:ss.00使用)

在此处输入图片描述

Excel Online 文件示例显示函数和自定义公式生成的时间值之间的差异TIME。(不幸的是,Excel online 不支持创建自定义数字格式,并且仅mm:ss.0在那里可用。)

答案3

它不显示您输入的瞬间秒数,因为您不允许它显示。

如上所述,仅当您在单元格中输入四个或更少的字符时,您的宏才会输出值。

超过四项时,宏将清除该条目。

四个或更少,它会在单元格中创建一个时间条目。

请注意,条目将是由四个或更少的字符组成的分钟(左边两个字符)和秒(右边两个字符)s

因此,如果您确实输入了分秒,则条目将被清除,并且不会显示任何时间。

更糟糕的是,TimeSerial()创建步骤确保结果仅仅是mm:ss

您需要重新考虑如何处理输入字符串。您必须将至少六个字符传递到最后的步骤中。

为了避免提到的任何限制TimeSerial(),也许可以执行已经存在的步骤,尽管使用字符串的左边两个字符和中间的第三和第四个字符来创建值TimeSerial(),然后添加右边的两个字符(除以,(24*60*60*100)因此它实际上是添加了瞬间的时间。

或者只需将字符串的每个部分除以适当的除数(分钟: (24*60)和秒 (24*60*60):),将值放入单元格中,然后应用mm:ss.00格式。Excel 本身很乐意允许显示最多千分之一(mm:ss.000)。

相关内容