使用VBA将数据从sheet1转换为sheet2

时间:2016-04-05 13:45:00

标签: vba loops copy offset

我浏览了一下互联网,找到了问题的答案。 我需要能够在Excel中将数据从sheet1复制到sheet2,但是行应该变成列。

在sheet1中,我在A列中列出了标题,范围和截止日期,在B列中列出了提供给这些标题的数据。 在sheet2中,我想点击一个CommandButton,它分别给出A1,B1和C1中的标题,范围和截止日期以及这些标题下面的数据。这样做时,代码应该在sheet2中列出标题时选择sheet1中的每四行,依此类推。

我试了一下,放不了。我的想法是使用某种循环。

coords

Source sheet1

Destination Sheet2

我真的希望你们中的一些人可以帮助我。 谢谢, 米歇尔

2 个答案:

答案 0 :(得分:0)

您可以尝试这样的事情:

Sub moveData()

    Set sourceSheet = Worksheets("Sheet1")
    Set targetSheet = Worksheets("Sheet2")

    lastRow = sourceSheet.Cells(1, 1).End(xlDown).Row ' assume your data starts are A1 cell
    lastColumn = sourceSheet.Cells(1, 1).End(xlToRight).Column

    For columnCounter = 1 To lastColumn
        For rowCounter = 1 To lastRow
            targetSheet.Cells(columnCounter, rowCounter) = sourceSheet.Cells(rowCounter, columnCounter)
        Next
    Next

End Sub

它是转换函数的替代品,希望您可以根据自己的需要进行更改。

答案 1 :(得分:0)

不完美但应该有效 -

  Sub test()

    Dim rngSource As Range
    Dim rngTarget As Range

    Set rngSource = Sheets("Sheet1").Range("B2")
    Set rngTarget = Sheets("Sheet2").Range("A2")

    Dim strArr() As String
    ReDim strArr(0 To 4, 0 To 0)
    Dim i As Integer
    i = 0
    Do While rngSource.Value <> ""
        With rngSource
            strArr(0, i) = .Offset(0, 0).Value
            strArr(1, i) = .Offset(1, 0).Value
            strArr(2, i) = .Offset(2, 0).Value
            strArr(3, i) = .Offset(0, 1).Value
            strArr(4, i) = .Offset(0, 2).Value
        End With
        i = i + 1
        Set rngSource = rngSource.Offset(4, 0)
        ReDim Preserve strArr(4, i)

    Loop

    Range(rngTarget, rngTarget.Offset(i, 4)).Value = _
            Application.WorksheetFunction.Transpose(strArr)

End Sub