问题描述
|
我需要一点帮助,或者需要一个VBA脚本,它可以按照以下格式转换大型数据集(960000行)。所有数据都在一栏中
TRIP_ID | OBJECTID | CPR_VEJNAV | ADM_VEJSTA | ADM_VEJKLA | vejid | vejkl | Shape_Length
2626 | value | value | value | value | value | value | value
..
..
2626 | value | value | value | value | value | value | value
64646 | value | value | value | value | value | value | value
..
..
..
64646 | value | value | value | value | value | value | value
我想将数据转换为多列,每个TRIP_ID都包含一列,如下所示:
TRIP_ID | ..... | TRIP_ID ..... | And so on
2626 | ..... | 64646 .....
..
..
2626 | ...... | 64646 .....
依此类推,我大约有1800 TRIP_ID
简而言之:
根据TRIP_ID从一长列转换为多列
解决方法
在运行其他人的代码之前,请务必备份您的数据
Sub SplitToColumns()
Dim rCell As Range
Dim sCurrent As String
Dim rLast As Range
Dim lRowStart As Long
Application.EnableEvents = False
Set rLast = Sheet1.Range(\"A2\").End(xlDown).Offset(1,0)
rLast.Value = \"End\"
For Each rCell In Sheet1.Range(\"A2\",rLast).Cells
If Split(rCell.Value,\"|\")(0) <> sCurrent Then
If lRowStart > 1 Then
rCell.Offset(lRowStart - rCell.Row,0).Resize(rCell.Row - lRowStart,1).Copy
Sheet1.Cells(2,Sheet1.Columns.Count).End(xlToLeft).Offset(0,1).Resize(rCell.Row - lRowStart,1).PasteSpecial xlValues
End If
lRowStart = rCell.Row
sCurrent = Split(rCell.Value,\"|\")(0)
End If
Next rCell
rLast.ClearContents
Application.CutCopyMode = False
Application.EnableEvents = True
End Sub