【问题标题】:Copy every three cells in a column from one sheet and paste to another sheet从一个工作表复制一列中的每三个单元格并粘贴到另一个工作表
【发布时间】:2019-03-16 17:35:48
【问题描述】:

我看过有关复制一系列数据并粘贴添加空白的帖子,但我需要一些更复杂的东西。

我有一系列数据需要从一张纸上复制并粘贴到另一张纸上。另一张表每隔 4 个单元格就有我不想覆盖的数据。所以我基本上有很长的数据范围,我需要复制三个单元格并粘贴到我描述的第 4 个单元格下的另一张纸上,一遍又一遍,直到我到达数据范围的末尾。

示例: 来自表 1 的数据 Sheet 1 data

需要粘贴到这张纸上 2 sheet 2 test

所以最终结果是表 2,其中“测试”单元格没有被覆盖 sheet 2 with data pasted

谢谢!

编辑

这是我现在使用的代码:

'Now, copy specimen results from wb1:

wb1.Sheets(1).Range("D53", wb1.Sheets(1).Range("D53" & NumOfwells * 4 + 44)).Copy

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

如您所见,它是一个被复制的动态范围,可能或多或少取决于输入数字 (NumOfwells),因此是范围的计算。

您可以看到正在复制的工作表中的哪个位置,即 D53 和 wb1 上的第一张表。然后粘贴到从 J6 开始的第二个工作簿上。

【问题讨论】:

  • 到目前为止你有什么尝试?
  • 好吧,我开始做一个简单的宏,在每三个单元格后添加一行,并打算复制它,但后来意识到这仍然会覆盖我要复制到的单元格。
  • 您仍然应该edit your question 并将您拥有的代码添加到其中。

标签: excel vba range cell


【解决方案1】:

欢迎来到 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

【讨论】:

  • 感谢您的建议!我已经添加了我在原始帖子中使用的代码。我想我不确定如何将您的代码集成到我的工作簿中。我尝试复制它并按原样运行宏,但它没有做任何事情。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
  • 2021-02-10
  • 2020-04-09
  • 1970-01-01
相关资源
最近更新 更多