【问题标题】:VBA Copy Range repeatedVBA复制范围重复
【发布时间】:2019-03-26 21:35:26
【问题描述】:

我试图在 VBA 中选择 14 行,我知道仪表的数量(起始单元格)。这些行在表中重复。我没有得到我想要的这段代码

Sub test()
Dim LastRow As Long


 Set sh = Sheets("Sheet1")

    LastRow = Cells(Rows.Count, 2).End(xlUp).Row
    Worksheets("Sheet1").Activate

  For x = 0 To LastRow

    If Worksheets("Sheet1").Cells(x, 2) = "58117552" Then                       
         Range(Cells(x, 2), Cells(X, 2)+14).copy
    End If
  Next 
End sub

感谢您的帮助。

【问题讨论】:

  • 你有什么问题?
  • 我没有得到我想要的代码
  • 你想做什么?
  • ...你想用这段代码做什么?
  • 我想在搜索仪表索引后选择所有行(例如:我在选择第 15 行并复制它们后在第二列中搜索 58117552)并对所有表执行相同的步骤,因为我还有其他数据相同的仪表。

标签: excel vba copy range rows


【解决方案1】:

由于您总是希望一个接一个地复制 15 行,并且在您的示例中,数字“Numéro de Compteuer”总是出现在 2、16、30(每 15 步),您可以跳过搜索功能,只需复制每个第 15 行以及下面的内容。

您需要定义要粘贴复制范围的位置...我刚拿了 Sheet2。

开始的东西:

Sub test()
Dim LastRow As Long
Dim sh As Worksheet
Dim sh2 As Worksheet
Dim X As Long

Set sh = Sheets("Sheet1") 'Define sheet to copy from
Set sh2 = Sheets("Sheet2") 'Define sheet to copy to

LastRow = sh.Cells(Rows.Count, 2).End(xlUp).Row 'Find last row to copy from

For X = 2 To LastRow Step 15 'Jump 15 step each time (since you are interested in every 15 row)
    If Worksheets("Sheet1").Cells(X, 2) <> "" Then 'If cell is empty then
         Range(sh.Cells(X, 2), sh.Cells(X + 14, 2)).Copy 'Copy the range, where 15 rows downward will be copied each time
         sh2.Range(sh2.Cells(X, 5), sh2.Cells(X + 14, 5)).PasteSpecial xlPasteValues 'Paste somewhere
    End If
  Next
Application.CutCopyMode = False
End Sub

【讨论】:

  • 你有很多不合格的范围。我会更新以解决这些问题。
  • 能否请您指出您的想法,以便我学习:)!!感谢您的时间和精力。
  • how to avoid using .Select/.Activate。看看sh2.Range() 的表现如何?这是一个合格的范围。您还应该告诉 VBA Cells() 应该在哪个工作表上。所以,以sh2.Range(sh2.Cells(...),sh2.Cells(...)) 为例
猜你喜欢
  • 1970-01-01
  • 2015-07-18
  • 2018-01-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多