我浏览了一下互联网,找到了问题的答案。 我需要能够在Excel中将数据从sheet1复制到sheet2,但是行应该变成列。
在sheet1中,我在A列中列出了标题,范围和截止日期,在B列中列出了提供给这些标题的数据。 在sheet2中,我想点击一个CommandButton,它分别给出A1,B1和C1中的标题,范围和截止日期以及这些标题下面的数据。这样做时,代码应该在sheet2中列出标题时选择sheet1中的每四行,依此类推。
我试了一下,放不了。我的想法是使用某种循环。coords
我真的希望你们中的一些人可以帮助我。 谢谢, 米歇尔
答案 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