【问题标题】:Excel VBA: Splitting a row into multiple rowsExcel VBA:将一行拆分为多行
【发布时间】:2017-04-21 02:25:21
【问题描述】:

我有一排单元格包含需要转换为多行的数据。

18-Apr-17 11:00:30 SkyFlyer1_Leg1 319437.222 146279.951 -32.768 SkyFlyer1_Leg2 319417.07 146268.105 -32.768 SkyFlyer1_Leg3 319410.548 146268.368 -368

这是一条线的一半(有 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

这是我到目前为止所得到的,包括将代码带入此页面的脚本。 (感谢 Shai Rado 迄今为止的帮助)

我想要的结果是数据排列如下:

17 年 4 月 18 日| 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

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    也许这会起作用

    子 CSVParser_99() 暗淡我只要 暗淡 x 长 将 LastRow 变暗 将 PasteRow 变暗 使用表格(“CSV 粘贴”) LastRow = .Range("A3").End(xlDown).Row 对于 i = 3 到 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) 调用 RowDiv 接下来我 结束于 结束子 子 RowDiv() 将 Row1 调暗为范围 使用工作表(“工作表 1”) 设置 Row1 = .Range("A6000").End(xlUp) 结束于 与第 1 行 .TextToColumns 目标:=ActiveCell,数据类型:=xlDelimited,_ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _ 分号:=False,逗号:=False,空格:=True,其他:=False,FieldInfo _ :=数组(数组(1, 1), 数组(2, 1), 数组(3, 1), 数组(4, 1), 数组(5, 1), 数组(6, 1), _ 数组(7, 1), 数组(8, 1), 数组(9, 1), 数组(10, 1), 数组(11, 1), 数组(12, 1), 数组(13, 1 _ ), Array(14, 1)), TrailingMinusNumbers:=True 结束于 结束子

    【讨论】:

    • 嗨,感谢您的帮助,但这似乎根本没有任何作用。我认为 TextToColumn 函数不起作用,因为数据已经分成列,我需要回车。干杯J
    • 我将您的数据直接复制粘贴到 Excel 工作表中,因为您没有提及列分隔符。因此,如果它已经在列中,则从最后一行循环,复制您需要的数据,插入您需要的行数并将数据复制到那里,然后向上移动一行
    • 问题是,我不知道如何遍历最后一行。你知道这个代码吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多