2017-04-20 216 views
0

我有一行单元格,其中包含需要转换为多行的数据。Excel VBA:将行分成多行

18-APR-17十一点00分30秒SkyFlyer1_Leg1 319437.222 146279.951 -32.768 SkyFlyer1_Leg2 319417.07 146268.105 -32.768 SkyFlyer1_Leg3 319410.548 146268.368 -32.768

这是一条线的一半(有8条腿)。空格表示单元格之间的分隔。

每个“SkyFlyer_Leg *”需要一个制图返回才能将它带到新行。

这些行正在使用另一个从CSV解析它们的脚本进入工作表。

Option Explicit 

Sub CSVParser_99() 

Dim i As Long 
Dim x As Long 
Dim LastRow As Long 
Dim PasteRow As Long 

    With Sheets("CSV Paste") 
     LastRow = .Range("A3").End(xlDown).Row 
     For i = 3 To LastRow 
      PasteRow = Sheets("Working Sheet 1").Cells(Sheets("Working Sheet 1").Rows.Count, "A").End(xlUp).Row 
     .Range(.Range("A" & i), .Range("A" & i).End(xlToRight)).Copy Destination:=Sheets("Working Sheet 1").Range("A" & PasteRow + 1) 

     Call RowDiv 

    Next i 
End With 

End Sub 

Sub RowDiv() 

Dim Row1 As Variant 

With Sheets("Working Sheet 1") 
    .Range("C6000").End(xlUp).Select 
End With 

With Row1.ActiveCell 

End With 

End Sub 

这是我迄今为止得到的,包括所带来的代码到这个页面的脚本。 (感谢夏嘉曦瑞士雷达表的帮助至今)

我想结果会像排列数据:

18-APR-17 | 11:00:30

SkyFlyer1_Leg1 | 319437.222 | 146279.951 | -32.768

SkyFlyer1_Leg2 | 319417.070 | 146268.105 | -32.768

SkyFlyer1_Leg3 | 319410.548 | 146268.368 | -32.768

任何帮助将不胜感激。

干杯,J

回答

0

也许这会工作

 
Sub CSVParser_99() 

    Dim i As Long 
    Dim x As Long 
    Dim LastRow As Long 
    Dim PasteRow As Long 

     With Sheets("CSV Paste") 
      LastRow = .Range("A3").End(xlDown).Row 
      For i = 3 To LastRow 
       PasteRow = Sheets("Working Sheet 1").Cells(Sheets("Working Sheet 1").Rows.Count, "A").End(xlUp).Row 
      .Range(.Range("A" & i), .Range("A" & i).End(xlToRight)).Copy Destination:=Sheets("Working Sheet 1").Range("A" & PasteRow + 1) 

      Call RowDiv 

     Next i 
    End With 

End Sub 

 

Sub RowDiv() 

    Dim Row1 As Range 

    With Sheets("Working Sheet 1") 
     Set Row1 = .Range("A6000").End(xlUp) 
    End With 

    With Row1 

     .TextToColumns Destination:=ActiveCell, DataType:=xlDelimited, _ 
       TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ 
      Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _ 
      :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _ 
      Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1), Array(13, 1 _ 
      ), Array(14, 1)), TrailingMinusNumbers:=True 
    End With 

End Sub 

+0

您好,感谢您的帮助,但是这似乎并没有做任何事情。我认为TextToColumn函数不起作用,因为数据已经被分离到列中并且我需要一个返回。 Cheers J – JKRH

+0

我将你的数据直接复制到Excel表格中,因为你没有提到列分隔符。所以如果它已经进入列,从最后一行开始循环,复制你需要的数据,插入你需要的行数并在那里复制数据,然后向上移动一行 – pascalb

+0

问题是,我不知道如何循环最后一行。你知道这个代码吗? – JKRH