VBA循环将数据从动态张数复制到第一张,复制次数太多

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

我仍然是VBA的新手,但我试图循环并复制动态数量的工作表数据(这些数据每月更改并且长度不同)并且不包括前两张和最后一张。数据从第6行开始,我想将所有内容复制到名为Combined_Athlete的最后一行的第一张纸上。我下面的代码实际上工作,但循环数据5次,并将内容的副本复制到第一个选项卡。谁能帮忙告诉我哪里出错了?我设置第二个变量将数据从第6行复制到最后一行,因为它是它开始的地方,但我不确定这是否是它复制的5倍额外数据的原因。任何帮助表示赞赏!

Sub CopyAndCombineSheets()

    Dim i As Integer
    Dim j As Integer
    Dim ws As Worksheet
    Dim LastRow As Long

    For i = 3 To Worksheets.Count - 1

        For Each ws In Worksheets
        Worksheets(i).Select

        LastRow = ThisWorkbook.ActiveSheet.UsedRange.Rows.Count

                For j = 6 To LastRow
                    ThisWorkbook.ActiveSheet.Rows(j).Copy Sheets("Combined_Athlete").Range("A" & Sheets("Combined_Athlete").Range("A" & Rows.Count).End(xlUp).Row + 1)
                Next j

        Next ws

    Next i

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

您在所有工作表中循环两次。尝试这样的事情:

For Each ws In Worksheets
    If ws.Name <> "Combined_Athlete" then
        LastRow = ws.UsedRange.Rows.Count
        For j = 6 To LastRow
            ws.Rows(j).Copy Sheets("Combined_Athlete").Range("A" & Sheets("Combined_Athlete").Range("A" & Rows.Count).End(xlUp).Row + 1)
        Next j
    End if
Next ws
© www.soinside.com 2019 - 2024. All rights reserved.