Function TimeConversion(mValue As Variant)
'时间转换
Dim TmpArr
Dim mDay$, mTime$, mInterval$
TmpArr = Split(mValue, " ")
If UBound(TmpArr) = 2 Then
mDay = TmpArr(0)
mInterval = TmpArr(1)
mTime = TmpArr(2)
If mInterval = "下午" Then
mTime = TimeValue(mTime) + TimeValue("12:00:00")
End If
TimeConversion = mDay & " " & mTime
End If
End Function
为了公式简便,建议先筛选包含有“下午”的单元格,然后使用公式。(注意,原始数据的单元格的格式必须是常规,不能带任何格式,不能用日期不能用时间。此外,公式里的冒号必须从原始数据里复制过来,保持前后一致,不然find不到正确的冒号公式会失效。)
一、计算过程如下:
在B1里定位首个冒号的位置:=FIND(":",A1)
在C1里截取小时数再加12转为24小时制:=MID(A1,B1-2,2)+12
最后在D1里用&连接各个内容:=LEFT(A1,(B1-7))&" "&C1&RIGHT(A1,LEN(A1)-B1+1)
二、如果上面的公式可以计算出正确的数值,也可以直接在B1里输入公式:
=LEFT(A1,((FIND(":",A1))-7))&" "&(MID(A1,(FIND(":",A1))-2,2)+12)&RIGHT(A1,LEN(A1)-(FIND(":",A1))+1)
最后取消筛选,把上午替换为空值。
有问题可以再喊我。
CTRL+H把【上午】和【下午】替换为空就可以了:
按左下角的【全部替换】
在E1中输入或复制粘贴下列公式
=--SUBSTITUTE(SUBSTITUTE(C1,"上午",),"下午",)+ISNUMBER(FIND("下午",C1))*0.5
下拉填充
将E列设置为上图的日期时间格式
设置B列单元格格式为e-mm-dd hh:mm:ss