我有一个包含两列的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识别我导入的数据。
答案 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列。如果您对结果感到满意,删除该列应该没有问题。