从 mm.ss.00 字符串中解析秒数
Parsing seconds from mm.ss.00 string
我有很多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 位数字必须是分钟。
这应该有效:
=TIMEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"min ",":"),"sec",""))*24*60*60
1) 使用替换删除 "min" 和 "sec" 文本,它是 "useless" 并且只是妨碍。另外,在第一个空白处添加一个 : 以帮助 Excel 理解格式。
2) 转换为内部 Excel date/time code/value。
3) 乘以我的 24(一天 24 小时)*60(一小时 60 分钟)*60(一分钟 60 秒)以获得所涉及的秒数。
** 对不起,我想我看错了输入格式..
以上假设数据的输入类似于“1 分钟 44.72 秒”..
如果数据只是“1.44.72”.. 改用这个:
=TIMEVALUE(SUBSTITUTE(B1,".",":",1))*24*60*60
类似的想法,将第一个句点转换为冒号,然后转换为内部 Excel 时间,然后转换为秒。 ;)
Select 您要转换的单元格和 运行 这个简短的宏:
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宏。宏非常易于安装和使用:
- ALT-F11 调出 VBE window
- ALT-I
ALT-M 打开一个新模块
- 粘贴内容并关闭 VBE window
如果您保存工作簿,宏也会随之保存。
如果您使用的 Excel 版本晚于 2003,则必须保存
文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE window
- 清除代码
- 关闭 VBE window
要使用来自 Excel 的宏:
- ALT-F8
- Select宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能工作!
编辑#2
根据您更新后的 post,这是更新后的宏:
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
请尝试:
=RIGHT(A1,LEN(A1)-FIND(".",A1))+60*LEFT(A1,FIND(".",A1))
这会将 1.44.72
之类的内容视为一个字符串,并对其进行操作以去除第一个句点(美国的句点)之前的数字字符。如果要忽略分钟,则可能不需要包括加号和加号之后的部分,因为它采用第一个句点(分钟)之前的数字转换为秒并将其添加到从第一部分开始的秒和百分之一秒公式。
加法过程将字符串操作的文本结果转换为数字格式,尽管这可以通过其他方式实现秒和百分之一秒。
我有很多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 位数字必须是分钟。
这应该有效:
=TIMEVALUE(SUBSTITUTE(SUBSTITUTE(A1,"min ",":"),"sec",""))*24*60*60
1) 使用替换删除 "min" 和 "sec" 文本,它是 "useless" 并且只是妨碍。另外,在第一个空白处添加一个 : 以帮助 Excel 理解格式。 2) 转换为内部 Excel date/time code/value。 3) 乘以我的 24(一天 24 小时)*60(一小时 60 分钟)*60(一分钟 60 秒)以获得所涉及的秒数。
** 对不起,我想我看错了输入格式..
以上假设数据的输入类似于“1 分钟 44.72 秒”.. 如果数据只是“1.44.72”.. 改用这个:
=TIMEVALUE(SUBSTITUTE(B1,".",":",1))*24*60*60
类似的想法,将第一个句点转换为冒号,然后转换为内部 Excel 时间,然后转换为秒。 ;)
Select 您要转换的单元格和 运行 这个简短的宏:
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宏。宏非常易于安装和使用:
- ALT-F11 调出 VBE window
- ALT-I ALT-M 打开一个新模块
- 粘贴内容并关闭 VBE window
如果您保存工作簿,宏也会随之保存。 如果您使用的 Excel 版本晚于 2003,则必须保存 文件为 .xlsm 而不是 .xlsx
删除宏:
- 如上所述调出 VBE window
- 清除代码
- 关闭 VBE window
要使用来自 Excel 的宏:
- ALT-F8
- Select宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能工作!
编辑#2
根据您更新后的 post,这是更新后的宏:
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
请尝试:
=RIGHT(A1,LEN(A1)-FIND(".",A1))+60*LEFT(A1,FIND(".",A1))
这会将 1.44.72
之类的内容视为一个字符串,并对其进行操作以去除第一个句点(美国的句点)之前的数字字符。如果要忽略分钟,则可能不需要包括加号和加号之后的部分,因为它采用第一个句点(分钟)之前的数字转换为秒并将其添加到从第一部分开始的秒和百分之一秒公式。
加法过程将字符串操作的文本结果转换为数字格式,尽管这可以通过其他方式实现秒和百分之一秒。