指纹机导出的excel表,时间显示为yyyy-mm-dd 上⼀下午 hh:mm:ss,怎样批量转换成yyyy-mm-dd HH:MM:SS。

2025-03-25 23:46:59
推荐回答(5个)
回答1:

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

回答2:

为了公式简便,建议先筛选包含有“下午”的单元格,然后使用公式。(注意,原始数据的单元格的格式必须是常规,不能带任何格式,不能用日期不能用时间。此外,公式里的冒号必须从原始数据里复制过来,保持前后一致,不然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)

最后取消筛选,把上午替换为空值。

有问题可以再喊我。

回答3:

CTRL+H把【上午】和【下午】替换为空就可以了:

按左下角的【全部替换】

回答4:

在E1中输入或复制粘贴下列公式

=--SUBSTITUTE(SUBSTITUTE(C1,"上午",),"下午",)+ISNUMBER(FIND("下午",C1))*0.5

下拉填充

将E列设置为上图的日期时间格式

回答5:

设置B列单元格格式为e-mm-dd hh:mm:ss