首页 文章

如何在将数据复制并粘贴到新工作表后更改sub中的范围

提问于
浏览
2

我创建了一个宏来从一个工作表复制数据并将数据转置并粘贴到另一个工作表,如下所示:

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次,我不太清楚如何做到这一点 . 我假设我需要在Range中使用.offset功能,但我不知道如何做到这一点......

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

我想到创建一个变量来定义起始单元格,另一个变量来定义该范围的结束单元格,然后使用offset来增加循环内部的偏移量 . 我最大的问题是......我不确定如何为我的偏移定义起始单元格和结束单元格!另外,我不确定我是否可以做以下事情:

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

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

2 回答

  • 2

    使用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
    
  • 3

    也许尝试使用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
    

相关问题