0

我正在尝试编写一小段代码,它将真正执行 3 个不同的功能。

在 Sheet1 中,我有 4 列数据,这是可变数量的行,第 4 列包含需要分隔的数据,因为它包含分号,这也是可变数量的数据。

我希望能够将这 4 列逐行复制到 Sheet2 以确保我已经分隔了第 4 列,然后对其进行转置,从第 4 列中删除所有数据并替换为转置后的数据。

除此之外,我希望它能够循环遍历,以便所有内容都已被复制和转置等,因此 Sheet2 上的数据之间存在 1 行间隙,该间隙将从第 4 列的末尾作为它的可变数量的数据。

如果有人可以提供帮助,我将不胜感激。

这是我目前正在使用的代码,它允许我复制 4 列的第一行,然后粘贴到 Sheet2。

Sub Test1()
    Sheets("FT Raw").Select
    Range("A2").Select

    Do Until IsEmpty(ActiveCell)
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Copy
        Sheets("FT WDs").Select
        Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, _
            SkipBlanks:=False, Transpose:=False

        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
4

1 回答 1

0

编辑:更新以在转置和添加工作表之前对数组进行排序。

包括来自http://en.allexperts.com/q/Visual-Basic-1048/string-manipulation.htm的 QuickSort 子

Sub Test1()
    Dim shtSrc, shtDest, rngSrc, rwDest, r, arr, num

    Set rngSrc = Sheets("FT Raw").Range("A2")
    Set shtDest = Sheets("FT WDs")
    r = shtDest.Cells(Rows.Count, 4).End(xlUp).Row + 2           
    Do While Len(rngSrc.Value) > 0
        shtDest.Rows(r).Cells(1).Resize(1, 3).Value = _
                     rngSrc.Resize(1, 3).Value
        arr = Split(rngSrc.Offset(0, 3).Value, ";")
        QuickSort arr, 0, UBound(arr) 'include method from link above...
        num = UBound(arr) + 1
        shtDest.Rows(r).Cells(4).Resize(num, 1).Value _
               = Application.Transpose(arr)
        r = r + num + 1

        Set rngSrc = rngSrc.Offset(1, 0)
    Loop
End Sub
于 2013-11-07T21:10:07.367 回答