将日期时间数据导入excel

时间:2016-01-19 10:33:41

标签: excel date time format

我有一个包含两列的txt文件。行看起来像这样: 20160119,101000

这意味着“2016年1月19日10:10:00” 将此日期转换为Excel的日期时间数据的最简单方法是什么?

即。最后我想得到一个包含日期时间值的列。

ADD: 当然,我可以这样做:

DATEVALUE(MID(A11;5;2)  & "/" &MID(A11;7;2) & "/" & MID(A11;1;4)) + TIMEVALUE(MID(A11;10;2) & ":" & MID(A11;12;2) & ":" & MID(A11;14;2))

但我正在寻找的是在出口步骤中格式化它的一些自动方式。我可以想象如下:我创建自定义日期 - yime“yyyymmdd,hhmmss”格式并告诉Excel识别我导入的数据。

2 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是打开空白Excel文件并使用“数据”,“从文本”导入文本文件。使用逗号作为分隔符。确保在文本导入向导的第三步中将两列都设置为文本,以避免丢失前导零。有关此过程的一些指示,请参阅jkp-ads.com/articles/importtext.asp

您应该在A列获得20160119,在B列获得101000。

然后使用以下两个公式将A列和B列中的值转换为日期和时间:

= DATE(LEFT(α-1,4),MID(A1,5,2),RIGHT(A1,2))

= TIMEVALUE(LEFT(B1,2)及;":"&安培; MID(B1,3,2)及;":"&安培; RIGHT(B1, 2))

请注意,如果时间值小于10:00:00(如果它们在9:00:00时显示为90000而不是090000),则可能需要调整此值。在这种情况下,请使用此公式表示时间:< / p>

= TIMEVALUE(LEFT(B1,IF(LEN(B1)= 5,1,2))安培;&#34;:&#34;&安培; MID(B1,3,2)及;&#34 ;:&#34;&安培; RIGHT(B1,2))

答案 1 :(得分:1)

快速Range.TextToColumns method可以正确地从YMD转换A列中的日期,但是需要逐个细胞操作来添加B列的时间。

Sub repairDatesYMD()
    Dim rw As Long

    With Worksheets("sheet2")
        With .Cells(1, 1).CurrentRegion
            .Columns(1).TextToColumns Destination:=.Cells(1), DataType:=xlFixedWidth, _
                                      FieldInfo:=Array(0, 5)
            For rw = 2 To .Cells(Rows.Count, 2).End(xlUp).Row
                .Cells(rw, 1) = .Cells(rw, 1).Value2 + _
                    TimeValue(Left(.Cells(rw, 2).Text, 2) & Chr(58) & _
                              Mid(.Cells(rw, 2).Text, 3, 2) & Chr(58) & _
                              Right(.Cells(rw, 2).Text, 2))

            Next rw
            .Range(.Cells(rw - 1, 1), .Cells(rw - 1, 1).End(xlUp)).NumberFormat = _
                "dd mmmm yyyyy hh:mm:ss"
        End With
    End With
End Sub

我已将时间留在B列。如果您对结果感到满意,删除该列应该没有问题。

date_conversion_YMD_before
在修复日期YMD处理之前

date_conversion_YMD_after 修复日期YMD处理