我已将大量数据导入excel,但第一列是一列中的时间戳数据
Timestamp
如果有人愿意建议运行脚本或类似的最快方式分成两列“日期”和“时间”,那将非常感谢。
答案 0 :(得分:0)
您可以将所有日期和时间复制到文本编辑器中,将空格替换为,
然后导入数据,然后使用逗号创建文本文件excel,选择逗号作为分隔符,现在您应该有两列此数据,而不使用任何宏或公式来执行此操作。
答案 1 :(得分:0)
“使用LEFT / RIGHT公式提取x个字符”,遗憾的是,此数据的时间格式为dd / mm / yyyy hh:mm,因此左右公式提取的时间戳编号不是时间。
我发现的工作是
= TEXT(A1,“hh:mm”)将时间拉出到另一个单元格中 = TEXT(A1,“dd / mm / yyyy”)仅抽出日期。
答案 2 :(得分:0)
如果数据在A栏中,我会使用以下功能:
B列中的:= DATEVALUE(TEXT(A1,“mm / dd / yy”))格式为日期
列C中的:= TIMEVALUE(TEXT(A1,“hh:mm”))格式为时间
这样,数据分别作为日期和时间值保留。
答案 3 :(得分:0)
日期/时间只是一个数字,整数表示日期,余数表示一天中的时间 因此,今天午夜(2017年9月4日)的数字为42982,即自1900年1月1日以来的天数。
今天中午的数字是42982.5 - 一天中途。
因此,您在单元格A1中的日期/时间可以使用=INT(A1)
并格式化为日期以仅返回日期。
您可以使用=A1-INT(A1)
格式化时间来仅返回时间
请注意,这会丢失数字中的日期信息 - 中午现在由0.5
表示,与00/01/1900 12:00
相同。
最好将日期/时间添加到两列,并将其格式化为仅日期,将另一个格式化为时间。任何超过一天的计算都是正确的。
答案 4 :(得分:0)
使用数组 在这里,您可以在A列的源数据中找到一些使用数组的代码行。日期和时间部分的分割值将写回到相邻的两列B和C列中。
备注使用数组循环而不是通过范围直接循环,性能总是好得多。
<强>代码强>
Sub splitDateValues()
Dim vArr As Variant ' array based on source data in columns A (to C)
Dim temp As Variant ' dates split
Dim i As Long ' row number
Dim lstRow As Long ' last row in source data
Dim rngSource As Range ' source data (in column A, including a head line in A1)
' A. define data source range (column A) and include adjacent columns B and C to write back split values
With ThisWorkbook.Worksheets("MyDateSheet")
' find last row in source
lstRow = .Cells(.Rows.Count, 1).End(xlUp).Row
' set source range including columns B and C
Set rngSource = .Range("A1:C" & lstRow)
End With
' B. build one based array vArr out of source data range
' (instead of looping directly thru range)
vArr = rngSource.Value
' C. loop thru array and split values (beginning in second line)
vArr(1, 2) = "Date": vArr(1, 3) = "Time"
For i = 2 To UBound(vArr)
' split date values into temp variable consisting of two portions
temp = Split(vArr(i, 1) & String(2, " "), " ")
If temp(1) = "" Then temp(1) = "0:0:0"
' one based 2-dimensional array vArr gets zero based split values
vArr(i, 2) = temp(0) ' date Portion temp(0)
vArr(i, 3) = temp(1) ' time Portion temp(1)
Next i
' D. write array back to worksheet
rngSource = vArr
End Sub