我收到了一张有数千条记录的表格,其中的日期/时间记录是不正确的。有些时间格式缺少一个前导零,我需要减少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到09:59。
我面临的挑战是找到一个公式来完成所有这一切,这样我就不必费力地通过数千条记录来修正时间。
发布于 2018-03-09 14:17:29
我怀疑你已经搞清楚了,但这里有一种方法(因为我觉得它很有趣)

因此,列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)现在,将列AM D中的值转换为24小时时间格式(没有:),该格式基于A列中的或。因此,列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))我不知道这是否是最好的方法,但首先想到的是:)
https://stackoverflow.com/questions/49193848
复制相似问题