我收到一张包含数千条记录的表格,其中日期/时间记录不正确。有些时间格式缺少前导零,我需要修剪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。
我的挑战是找到一个可以完成所有这一切的公式,这样我就不必花费数千条记录来修复时间。
答案 0 :(得分:0)
我怀疑你已经想到了这一点,但这是一种方法(因为我发现它很有趣)
所以列 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))
不确定这是否是最好的方法,但首先是我的方法:)