将Excel日期/时间转换为24小时,缺少字符

时间:2018-03-09 12:28:09

标签: excel

我收到一张包含数千条记录的表格,其中日期/时间记录不正确。有些时间格式缺少前导零,我需要修剪AM / PM和秒位置。时间需要在24小时(军事)时间。例如:

10/8/2016  80000 AM
Should be:  2016-10-08 08:00   (yyyy-mm-dd hh:mm)

其他一些记录的字符数正确。例如:

10/8/2016  120000 PM
Should be:  2016-10-08 12:00    (yyyy-mm-dd hh:mm)

因此,我可以从右边修剪PM和秒。

一般规则:如果数字以1开头,则可能是10:00到19:59之间的时间,如果数字以2 - 9开头,可能只需在前面添加0并将其设为02:00 9点59。

我的挑战是找到一个可以完成所有这一切的公式,这样我就不必花费数千条记录来修复时间。

1 个答案:

答案 0 :(得分:0)

我怀疑你已经想到了这一点,但这是一种方法(因为我发现它很有趣)
enter image description here

所以列 A 保存实际值
C 具有以下公式来提取日期(此处的假设是 A 列中字符串的第一部分是日期):

=TEXT(LEFT(A2,FIND(" ", A2, 1)-1), "yyyy-mm-dd")

D 从列 A 中提取时间字符串:

=LEFT(RIGHT(A2,LEN(A2)-SEARCH(" ",A2)),SEARCH(" ", RIGHT(A2,LEN(A2)-SEARCH(" ",A2)))-1)

现在根据 : D 列中的值转换为24小时时间格式(不包含AM)列 A 中的PM 。列 E 是:

=IF(UPPER(RIGHT(TRIM(A2),2))="PM",IF(LEFT(TRIM(D2),1)="1",12+INT(LEFT(D2,2)),12+INT(LEFT(D2,1)))&RIGHT(TRIM(D2),4), D2)

剩下的就是创建所需的字符串.. F 列出现的地方:

=C2& " "&IF(LEN(E2)=5,"0"&LEFT(E2,1),LEFT(E2,2))&":"&IF(LEN(E2)=5,MID(E2, 2,2),MID(E2, 3,2))

不确定这是否是最好的方法,但首先是我的方法:)