将date – 时间数据导入到excel中
我有一个包含两列的txt文件。 行看起来像这样:20160119,101000
这意味着“2016年1月19日10:10:00”将date转换为Exceldate时间数据的最简单方法是什么?
即最终我想获得一个date时间值的列。
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))
但是我正在寻找的是一个自动的方式来格式化它的出口步骤。 我可以想象如下:我创build自定义date – yime“yyyymmdd,hhmmss”格式,并告诉Excel识别我导入的数据。
一种方法是打开一个空白的Excel文件并使用数据,从文本导入文本文件。 使用逗号作为分隔符。 确保在文本导入向导的第三步中将两个列都设置为文本,以避免丢失前导零。 查看jkp-ads.com/articles/importtext.asp了解这个过程的一些指针。
你应该在A栏中得到20160119,在B栏中得到101000。
然后使用这两个公式将列A和B中的值转换为date和时间:
= 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时,可能需要调整此值。在这种情况下,请使用以下公式:
= TIMEVALUE(LEFT(B1,IF(LEN(B1)= 5,1,2)) “:” &MID(B1,3,2) “:” &RIGHT(B1,2))
快速的Range.TextToColumns方法可以正确地将Y列中的date转换为YMD,但是需要逐个单元格操作来添加列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处理
修复后的dateYMD处理