excel 将写入时间转换为文本(时间戳)

7d7tgy0s  于 2022-12-01  发布在  其他
关注(0)|答案(1)|浏览(138)

我有一项任务要编写一个宏,该宏将用文本将给定的时间替换为表示Excel中的天数、小时数、分钟数和秒数的数字。
示例数据文本-〉预期结果
| 文字|时间戳记|
| - -|- -|
| 22分钟|00时00分22秒00分|
| 1小时5分钟|00时01分05秒00分|
| 2天,15小时,4分钟|02点15分04分00秒|
| 1天15分钟|上午1时00分下午1时15分|
| 2周5天5分钟|19时00分05秒00分|
我试着做了很多如果,但它似乎不是一个好的解决方案,其他人有一个想法?

sqxo8psd

sqxo8psd1#

如果您使用vba,则此函数将解决您问题

Function str2time(ByVal tmpstr As String)
On Error GoTo exit_Function
Dim arr As Variant: arr = Split(tmpstr, ",")
Dim I As Long
Dim d As Long: d = 0
Dim h As Long: h = 0
Dim m As Long: m = 0
      For I = LBound(arr) To UBound(arr)
            If InStr(LCase(arr(I)), "week") > 0 Then
            d = d + Val(arr(I)) * 7
            ElseIf InStr(LCase(arr(I)), "day") > 0 Then
            d = d + Val(arr(I))
            ElseIf InStr(LCase(arr(I)), "h") > 0 Then
            h = Val(arr(I))
            ElseIf InStr(LCase(arr(I)), "min") > 0 Then
            m = Val(arr(I))
            End If
      Next I
str2time = IIf(d > 10, d, "0" & d) & ":" & IIf(h > 10, h, "0" & h) & ":" & IIf(m > 10, m, "0" & m) & ":00"
exit_Function:
End Function

非常简单,自我解释

相关问题