如何在复制粘贴数据到新工作表后更改子范围

我已经创build了一个macros来复制一张纸上的数据,并将数据转置并粘贴到另一张纸上,如下所示:

Sub sbCopyRangeToAnotherSheet() 'Copy the data Sheets("Raw Data").Range("A4:A27").Copy 'Transpose and paste data to new sheet Sheets("Distinct Users").Range("D6:AA6").PasteSpecial Transpose:=True End Sub 

我需要这样做31次,我不太清楚如何做到这一点。 我假设我需要在范围内使用.offsetfunction,但我不知道如何做到这一点…

例如,我需要将复制的初始范围(“A4:A27”)更改为(“A28:A51”),然后将粘贴的范围更改为(“D7:AA7”)。

我想创build一个variables来定义起始单元格,另一个variables来定义范围的结束单元格,然后使用偏移来增加循环内部的偏移量。 我最大的问题是…我不知道如何定义我的偏移量的起始单元格和结束单元格! 另外,我不确定我是否可以做这样的事情:

 Dim lwrRange1 as Cell = "A4" Dim uprRange1 as Cell = "A27" Dim lwrRange2 as Cell = "D6" Dim uprRange2 as Cell = "AA6" Do While 1 <= 31 'Copy the data Sheets("Raw Data").Range(lwrRange1:uprRange1).Copy 'Transpose and paste data to new sheet Sheets("Distinct Users").Range(lwrRange2:uprRange2).PasteSpecial Transpose:=True lwrRange1 += 24 uprRange1 += 24 lwrRange2 += 1 uprRange2 += 1 i += 1 Loop 

任何帮助或见解将不胜感激!

使用Range对象:

 Dim SrcRg As Range Dim DestRg As Range Set SrcRg = Sheets("Raw Data").Range("A4:A27") Set DestRg = Sheets("Distinct Users").Range("D6") For i = 1 To 31 'Copy the data SrcRg.Copy 'Transpose and paste data to new sheet DestRg.PasteSpecial Transpose:=True Set SrcRg = SrcRg.Offset(SrcRg.Rows.Count, 0) Set DestRg = DestRg.Offset(1, 0) Next i 

也许尝试使用For循环如下所示:

  Sub sbCopyRangeToAnotherSheet() Dim i As Integer Dim rCopy As Range, rPaste As Range Set rPaste = Sheets("Distinct Users").Range("D6:AA6") Set rCopy = Sheets("Raw Data").Range("A4:A27") For i = 0 To 30 'Copy the data rCopy.Offset(rCopy.Rows.Count * i, 0).Copy 'Transpose and paste data to new sheet rPaste.Offset(rPaste.Row + i, 0).PasteSpecial Transpose:=True Next i End Sub