【问题标题】:Clean up date/time data so Excel recognizes it清理日期/时间数据,以便 Excel 识别它
【发布时间】:2017-03-22 17:14:16
【问题描述】:

我有一列包含以下日期/时间数据,但 Excel 无法将其识别为日期或时间字段。有谁知道让这些数据可用的简单方法?

提前致谢!

当前数据:

Completion Time Column
11/25/2013 @ 3:06PM
02/07/2012 @ 5:59PM
11/24/2013 @ 9:07AM
05/09/2013 @ 9:09AM
05/24/2013 @ 11:34AM
03/10/2013 @ 10:40PM
10/18/2012 @ 12:07PM
05/06/2014 @ 11:16AM
07/08/2014 @ 11:30AM
07/22/2014 @ 6:16PM
07/31/2014 @ 4:43PM

清理数据 (yyyy-mm-dd hh:mm):

Completion Time Column
2013-11-25 15:06
2012-02-07 17:59
2013-11-24 09:07
2013-05-09 09:09
2013-05-24 11:34
2013-03-10 22:40
2012-10-18 12:07
2014-05-06 11:16
2014-07-08 11:30
2014-07-22 18:16
2014-07-31 16:43

【问题讨论】:

    标签: excel date data-cleaning


    【解决方案1】:

    尝试使用这个公式

    =DATE(MID(A2, 7, 4), LEFT(A2, 2), MID(A2,4, 2))+TIMEVALUE(RIGHT(LEFT(A2,LEN(A2)-2),LEN(A2)-FIND(" @ ", A2)-4)&" "&RIGHT(A2,2))

    【讨论】:

      【解决方案2】:

      一旦你从当前数据中得到@符号,你应该能够 ctrl-d 并选择一个日期格式或创建你自己的。

      【讨论】:

      • 我试过了,但它仍然无法识别时间,因为 AM/PM 就在时间旁边,有一个空格。
      【解决方案3】:

      这个公式有点乱,但它每次都能正常工作并正确格式化您的结果:

      =DATE(MID(F16, 7, 4), LEFT(F16, 2), MID(F16,4, 2))+TIME(MID(F16, 14, FIND(":", F16)-14), MID(F16, FIND(":", F16)+1, 2), 0)+IF(RIGHT(F16, 2) = "AM", 0, 0.5)
      

      注意:我在单元格 F16 中输入了您的信息,因此您必须进行相应调整,还要注意 if "PM" add 0.5 最后处理 24 小时时间。

      您还希望将结果单元格格式化为 d/mm/yyyy HH:mm 以在 24 小时内显示

      【讨论】:

      • 非常接近工作。对于下午 12:00 到 12:59 之间的任何时间,它都将其视为上午并给我 00:00 到 00:59
      • 它实际上也在改变日期。 06/07/2016 @ 12:04PM 2016-06-08 00:04 通知 6/7 变为 6/8
      • 对不起,我做得很快,我认为这是正确的方法,虽然你只需要稍微调整一下
      【解决方案4】:

      试试这个 VBA 模块。

       Sub ConvertTheTime()
      
          Dim dateToConvert As Date
          Dim cell As Range
      
          ' Replace the @ so it is possible to work with the data/dates
          With ActiveSheet.UsedRange
          .Replace " @ ", " ", xlPart
          End With
      
         ' Loop through each of the cells and convert them to date
         For Each cell In ActiveSheet.UsedRange.Cells
                dateToConvert = CDate(cell)
      
               cell = Format$(dateToConvert, "yyyy-mm-dd hh:mm")
         Next
      End Sub
      

      【讨论】:

      • 不,他要求一个简单的方法。无论您喜欢与否,这都是一种简单的方法。并解释为什么这是矫枉过正?所有其他解决方案(包括您的解决方案)均无效。
      • 你是谁来判断这是否是矫枉过正?编码需要 5 分钟,如果他有更多的工作表或书籍,可以进行调整以供进一步使用。事实上是在解决他的问题。
      • 这非常有效。将他的数据粘贴到 A 列,运行脚本,得到他想要的输出。根据需要修改格式。试试吧,别再讨厌了。
      猜你喜欢
      • 2015-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-30
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      • 2021-09-19
      相关资源
      最近更新 更多