从mm.ss.00字符串解析秒数

时间:2015-06-16 13:16:53

标签: string excel excel-vba time excel-formula vba

我有mm.ss.00形式的大量经过时间记录。例如,如果已用时间为1min 44.72sec,则数据将变为1.44.72。我想将这些数据转换为纯秒数据。让我举几个例子:

|mm.ss.00        |seconds        |
|:--------------:|:-------------:|
|1.44.72         |104.72
|2.5.32          |125.32
|0.59.12         |59.12

我可以确保时间记录永远不会超过59分59.99秒,因此您可以轻松地假设1或2位数,然后第一个点(.)必须是分钟。

3 个答案:

答案 0 :(得分:1)

选择要转换的单元格并运行此短宏:

Sub Fixer()
    Dim r As Range, N As Long
    For Each r In Selection
        ary = Split(r.Text, ".")
        If UBound(ary) = 2 Then
            r.Clear
            r.Value = CLng(ary(1))
        End If
    Next r
End Sub

<强> 编辑#1:

这是 VBA 宏。宏很容易安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,宏将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除宏:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 要使用Excel中的宏:

      1. ALT-F8
      2. 选择宏
      3. 触碰RUN
      4. 要了解有关宏的更多信息,请参阅:

        http://www.mvps.org/dmcritchie/excel/getstarted.htm

        http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

        必须启用宏才能使其生效!

        修改#2

        根据您更新的帖子,这是更新的宏:

        Sub Fixer()
            Dim r As Range
            For Each r In Selection
                ary = Split(r.Text, ".")
                If UBound(ary) = 2 Then
                    r.Clear
                    r.Value = 60 * CDbl(ary(0)) + CDbl((ary(1) & "." & ary(2)))
                End If
            Next r
        End Sub
        

答案 1 :(得分:1)

请尝试:

=RIGHT(A1,LEN(A1)-FIND(".",A1))+60*LEFT(A1,FIND(".",A1))  

这会将1.44.72之类的字符串视为字符串,并对其进行操作以剥离数字字符,直至并包括第一个句点(美国时段)。如果要忽略分钟,则可能不需要包含和在加号后面的部分,因为它在第一个完全停止(分钟)之前转换为秒数并将其添加到第一个部分的秒和百分之几秒。公式。

添加过程将字符串操作的文本结果转换为数字格式,但这可以通过其他方式实现秒和百分之一秒。

答案 2 :(得分:-1)

这应该有效:

=TIMEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"min ",":"),"sec",""))*24*60*60

1)使用替换删除&#34; min&#34;和&#34;秒&#34;文字,它是无用的&#34;并且只是妨碍了。另外,添加一个:到第一个空白,以帮助Excel了解格式。 2)转换为内部Excel日期/时间代码/值。 3)多次我的24(一天24小时)* 60(每小时60分钟)* 60(每分钟60秒)以获得所涉及的秒数。

**对不起,我想我误读了输入格式..

以上假设数据进入的时间类似于&#34; 1分44.72秒&#34; .. 如果数据只是&#34; 1.44.72&#34; ..改用这个:

=TIMEVALUE(SUBSTITUTE(B1,".",":",1))*24*60*60

类似的想法,将第一个句点转换为冒号,然后转换为内部Excel时间,然后转换为秒。 ;)