Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 将数据复制粘贴到新工作表后如何更改sub中的范围_Vba_Excel - Fatal编程技术网

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

Vba 将数据复制粘贴到新工作表后如何更改sub中的范围,vba,excel,Vba,Excel,我创建了一个宏,用于从一张图纸复制数据,并将数据转置粘贴到另一张图纸上,如下所示: 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:=

我创建了一个宏,用于从一张图纸复制数据,并将数据转置粘贴到另一张图纸上,如下所示:

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次,但我不太确定如何做。我假设我需要在范围内使用.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
Dim lwrRange1作为单元格=“A4”
尺寸范围1为单元格=“A27”
尺寸lwrRange2为单元格=“D6”
尺寸范围2为单元格=“AA6”

执行While 1可能尝试使用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
使用范围对象:

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

这正是我要找的!非常感谢。