如何将行从其他工作表复制到目标工作表?

时间:2019-01-08 05:54:25

标签: excel vba

我有一个状况,如果您能帮助我,我真的很佩服,我浏览了SOF上发布的问题的所有解决方案,这些问题仅与我的问题有关,但仍然找不到解决方法!

我有一个主表,其列名称为a到z(例如),我还有许多其他名称不同的表,它们具有相同的列模式,现在我想要一个代码,该代码可以从其他表中复制行每张工作表的第2行,到母版工作表的下一个空行。同样,每张纸都有无法指定的可变行数。 如果您能帮助我,我真的很佩服!

2 个答案:

答案 0 :(得分:0)

For Each是您的朋友-您可以循环所有Worksheets和所有行,只需将非主表中的行指向主表的最后一行。

Sub ConsolidateWorksheets(ByVal MasterSheet As Worksheet)
    MasterLastRow = MasterSheet.Range("A" & MasterSheet.Rows.Count).End(xlUp).Row + 1

    For Each DataSheet In ThisWorkbook.Sheets
        LastRow = DataSheet.Range("A" & DataSheet.Rows.Count).End(xlUp).Row
        If DataSheet.Name <> MasterSheet.Name Then
            For Each DataRow In DataSheet.Range("A2:A" & LastRow)
                MasterSheet.Range("A" & MasterLastRow & ":Z" & MasterLastRow).Value = DataSheet.Range("A" & DataRow.Row & ":Z" & DataRow.Row).Value
                MasterLastRow = MasterLastRow + 1
            Next DataRow
        End If
    Next DataSheet
End Sub

Sub Launcher()
    Set MasterSheet = ThisWorkbook.Sheets(1) ' Comment this row after testing
    ' Set MasterSheet = ThisWorkbook.Sheets("YourWorksheetNameHere") ' Uncomment this row after testing and update the name of your Master Sheet

    ConsolidateWorksheets MasterSheet

End Sub
  

您可以通过运行Sub Launcher()

来运行此代码

答案 1 :(得分:-2)

sub test()
  dim MainSheetusedrows,OtherSheetusedrows as integer
  dim noOfSheets as integer

  noOfSheets = Thisworkbook.Sheets.Count

  for i = 1 to noOsfSheets
     sheets(i).activate
     OtherSheetusedrows = sheets(i).Range("A"& activesheet.rows.count).end(xlup).row
     sheets(i).Range("A2:Z"& OtherSheetusedrows).copy
     Sheets("MainSheet").activate
     MainSheetusedrows=Sheets("MainSheet")._
                      Range("A" & activesheet.rows.count).end(xlup).row
     Sheets("MainSheet").Range("A" & MainSheetusedrows + 1).select
     Activesheet.paste
  next
end sub

此代码将从“ OtherSheetusedrows”循环遍历所有工作表,并获取每张工作表中的行数,并将使用的数据复制到主工作表中。