循环数据并将其粘贴到具有列偏移量的另一个工作表中

问题描述 投票:0回答:1

我正在尝试循环数据并将其粘贴到具有列偏移量的另一个工作表中。

我从表格中复制日期(这不是我知道的正确方式)。将它们粘贴到“Dynamisch voorblad”工作表中后,我将结果从 (G24:G27) 复制到“Formule van Groei per week”(范围 B5)。

我想将其复制到工作表“Formule van Groei per week”中,从“B5”开始,在每个循环周期之后复制到下一列。所以 B5 C5 D5 E5 F5 等等

Sub ggg()

For i = 2 To 21
    'kies start
    Sheets("WAKA").Range("C" & i).copy
    Sheets("Dynamisch Voorblad").Range("C2").PasteSpecial Paste:=xlPasteValues
    'kies eind
    Sheets("WAKA").Range("D" & i).copy
    Sheets("Dynamisch Voorblad").Range("C3").PasteSpecial Paste:=xlPasteValues
    Sheets("Dynamisch Voorblad").Range("G24:G27").copy

    Sheets("Blad13").Range(i, 5).PasteSpecial xlPasteValues
Next i

End Sub
excel vba loops offset
1个回答
1
投票

复制值

  • 按分配复制效率更高,并且不会搞乱选择。
Option Explicit

Sub ggg()

    ' Reference the workbook.
    
    Dim wb As Workbook: Set wb = ThisWorkbook ' workbook containing this code
    
    ' Reference the worksheets.
    
    Dim wsDyn As Worksheet: Set wsDyn = wb.Worksheets("Dynamisch Voorblad")
    Dim wsWak As Worksheet: Set wsWak = wb.Worksheets("WAKA")
    Dim wsGro As Worksheet
    Set wsGro = wb.Worksheets("Formule van Groei per week")

    ' Reference the ranges.
    
    Dim rgDyn As Range: Set rgDyn = wsDyn.Range("G24:G27")
    Dim fCellGro As Range: Set fCellGro = wsGro.Range("B5")
    ' Make it the same size as 'rgDyn'.
    Dim rgGro As Range: Set rgGro = fCellGro.Resize(rgDyn.Rows.Count)

    Dim i As Long
    
    ' Loop.
    For i = 2 To 21
        'kies start
        wsDyn.Range("C2").Value = wsWak.Cells(i, "C").Value
        'kies eind
        wsDyn.Range("C3").Value = wsWak.Cells(i, "D").Value
        ' Copy the range.
        rgGro.Value = rgDyn.Value
        ' Reference the next column range.
        Set rgGro = rgGro.Offset(, 1)
    Next i

End Sub
© www.soinside.com 2019 - 2024. All rights reserved.