【发布时间】:2023-02-02 05:16:26
【问题描述】:
我正在尝试从一个名为“列表”的工作表复制到名为“第一次上传”、“第二次上传”、“第三次上传”、“第四次上传”和“第五次上传”的五个工作表。我需要将第 2 行复制到“第一次上传”,第 3 行复制到“第二次上传”,第 4 行复制到“第三次上传”等,然后循环到工作表的末尾(大约 20,000 行)。
我试图在多个上传表上以大致相同的行数结束,并且由于我正在使用的系统的要求,我需要以这种方式将它们分开。
我正在使用以下代码,它适用于第一次上传,但为其余工作表带来了太多结果(即“第二次上传”的两倍,“第三次上传”的三倍)。我使用的代码是:
Sub OffsetTrial()
Dim X As Long, LastRow As Long
Dim CopyRange As Range
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For X = 2 To LastRow Step 5
If CopyRange Is Nothing Then
Set CopyRange = Rows(X).EntireRow
Else
Set CopyRange = Union(CopyRange, Rows(X).EntireRow)
End If
Next
If Not CopyRange Is Nothing Then
CopyRange.Copy Destination:=Sheets("First Upload").Range("A2")
End If
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For X = 3 To LastRow Step 5
If CopyRange Is Nothing Then
Set CopyRange = Rows(X).EntireRow
Else
Set CopyRange = Union(CopyRange, Rows(X).EntireRow)
End If
Next
If Not CopyRange Is Nothing Then
CopyRange.Copy Destination:=Sheets("Second Upload").Range("A2")
End If
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For X = 4 To LastRow Step 5
If CopyRange Is Nothing Then
Set CopyRange = Rows(X).EntireRow
Else
Set CopyRange = Union(CopyRange, Rows(X).EntireRow)
End If
Next
If Not CopyRange Is Nothing Then
CopyRange.Copy Destination:=Sheets("Third Upload").Range("A2")
End If
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For X = 5 To LastRow Step 5
If CopyRange Is Nothing Then
Set CopyRange = Rows(X).EntireRow
Else
Set CopyRange = Union(CopyRange, Rows(X).EntireRow)
End If
Next
If Not CopyRange Is Nothing Then
CopyRange.Copy Destination:=Sheets("Fourth Upload").Range("A2")
End If
LastRow = Cells(Cells.Rows.Count, "A").End(xlUp).Row
For X = 6 To LastRow Step 5
If CopyRange Is Nothing Then
Set CopyRange = Rows(X).EntireRow
Else
Set CopyRange = Union(CopyRange, Rows(X).EntireRow)
End If
Next
If Not CopyRange Is Nothing Then
CopyRange.Copy Destination:=Sheets("Fifth Upload").Range("A2")
End If
End Sub
我认为,例如,在第一部分中,For X = 2 To LastRow Step 5 将从第 2 行开始并偏移 5 行,然后 For X = 3 To LastRow Step 5 将从第 3 行开始并偏移 5 行,但我认为我错了或者我不能重复像这样的代码。对此的任何帮助将不胜感激。谢谢
【问题讨论】:
标签: excel vba copy offset autofilter