从一张纸复制一列中的每三个单元格,然后粘贴到另一张纸上

时间:2018-10-11 15:06:10

标签: excel vba range cell

我见过有关复制一系列数据并粘贴带有空白的文章,但是我需要更复杂一些。

我有一系列数据需要从一张纸上复制并粘贴到另一张纸上。另一张纸上有我不想覆盖的第4个单元格的数据。因此,我基本上具有很长的数据范围,我需要复制三个单元格并粘贴到我描述的第4个单元格下的另一张纸上,一遍又一遍,直到到达数据范围的尽头。

示例: 工作表1中的数据 Sheet 1 data

需要粘贴到此纸上2 sheet 2 test

所以最终结果有第2页,其中“ test”单元没有被覆盖 sheet 2 with data pasted

谢谢!

编辑

这是我现在正在使用的代码:

'现在,从wb1复制样本结果:

wb1.Sheets(1).Range(“ D53”,wb1.Sheets(1).Range(“ D53”&NumOfwells * 4 + 44))。复制

'Now, paste to y worksheet:
wb2.Sheets("Worksheet").Range("J6").PasteSpecial

如您所见,它是一个要复制的动态范围,其大小可能取决于输入数字(NumOfwells),因此将计算该范围。

您会看到要在工作表中的哪个位置进行复制,即D53,然后从wb1的工作表1开始向下复制。然后粘贴到从J6开始的第二个工作簿中。

1 个答案:

答案 0 :(得分:0)

欢迎使用StackOverflow。如果您以后发布问题,请 包括您尝试过的代码,并确定失败的地方。

从您的问题和样本中,您实际上不需要查找第4行 您实际上只是在尝试将数据粘贴到没有任何内容的地方 目标区域。

代码使用相同的基本循环来显示两种情况。通过以下过程,您可以选择范围和目标表。

Sub test2()
    Call CopyData(Sheet1.Range("A3:A13"), sheet2)
End Sub

Private Sub CopyData(ByVal SourceRange As Range, ByRef TargetWorksheet As Worksheet)
    Dim oIndex As Long

    For oIndex = 1 To SourceRange.Rows.Count + 1
        ' Check for blanks
        'If TargetWorksheet.Cells(SourceRange.Row + oIndex - 1, 1) = "" Then
        '    TargetWorksheet.Cells(SourceRange.Row + oIndex - 1, 1).Value = SourceRange.Cells(oIndex, 1).Value
        'End If

        ' Skip every 4th row
        If (oIndex - 1) Mod 4 <> 0 Then
            TargetWorksheet.Cells(SourceRange.Row + oIndex - 1, 1).Value = SourceRange.Cells(oIndex, 1).Value
        End If

    Next
End Sub