首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将Excel日期/时间转换为缺少字符的24小时

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

Stack Overflow用户
提问于 2018-03-09 12:28:09
回答 1查看 456关注 0票数 0

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

代码语言:javascript
复制
10/8/2016  80000 AM
Should be:  2016-10-08 08:00   (yyyy-mm-dd hh:mm)

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

代码语言:javascript
复制
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。

我面临的挑战是找到一个公式来完成所有这一切,这样我就不必费力地通过数千条记录来修正时间。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-09 14:17:29

我怀疑你已经搞清楚了,但这里有一种方法(因为我觉得它很有趣)

因此,列A保存实际值

C有以下公式来提取日期(这里假定A列中的字符串的第一部分是日期):

代码语言:javascript
复制
=TEXT(LEFT(A2,FIND(" ", A2, 1)-1), "yyyy-mm-dd")

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

代码语言:javascript
复制
=LEFT(RIGHT(A2,LEN(A2)-SEARCH(" ",A2)),SEARCH(" ", RIGHT(A2,LEN(A2)-SEARCH(" ",A2)))-1)

现在,将列AM D中的值转换为24小时时间格式(没有:),该格式基于A列中的或。因此,列E是:

代码语言:javascript
复制
=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列的位置:

代码语言:javascript
复制
=C2& " "&IF(LEN(E2)=5,"0"&LEFT(E2,1),LEFT(E2,2))&":"&IF(LEN(E2)=5,MID(E2, 2,2),MID(E2, 3,2))

我不知道这是否是最好的方法,但首先想到的是:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49193848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档