2011-05-26 24 views
0

我需要一點幫助,或者是一個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

多列
+0

你是說在7個其他列('OBJECTID'等)中現在是在7個不同行的單列中? – 2011-05-26 20:36:00

回答

1

運行別人的代碼之前,請務必使您的數據備份

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