18hr 28m 49s
18 days 19hr 12m 30s
我有一张包含文本值的 Excel 表(如上面的示例)。
有什么方法可以将它们转换为天数,例如:
- 如果我有 18 小时,它会四舍五入到最接近的天数并变成 1 天。
- 如果是 18 天 19 小时,则变为 19 天
请注意,这些值是文本格式。不是日期。不是时间。
答案1
答案2
这似乎有点过头了,但是您可以使用用户定义函数,这是代码:
Public Function toDays(datestring As String)
Dim datearray() As String
datearray = Split(datestring, " ")
totaldays = 0
totalhours = 0
totalmin = 0
totalsecs = 0
For i = LBound(datearray) To UBound(datearray)
newdata = datearray(i)
If IsNumeric(newdata) = True Then
totaldays = totaldays + newdata
i = i + 1
Else
For j = 1 To Len(newdata)
m = Mid(newdata, j, 1)
If IsNumeric(m) = False Then
separation = j
j = Len(newdata)
End If
Next j
numvalue = Mid(newdata, 1, separation - 1)
measurevalue = LCase(Mid(newdata, separation))
Select Case measurevalue
Case Is = "hr"
totalhours = totalhours + numvalue
Case Is = "m"
totalmin = totalmin + numvalue
Case Is = "s"
totalsecs = totalsecs + numvalue
End Select
End If
Next i
finalresult = Round(totaldays + (totalhours / 24) + (totalmin / 1440) + (totalsecs / 86400))
toDays = finalresult & " days"
End Function
打开宏ALT+F11右键单击This Workbook
并插入新模块。将代码粘贴到屏幕右侧。
现在,如果您的数据在单元格中,A1
那么A2
您应该在单元格中输入=toDays(A1)
。