我有一个状况,如果您能帮助我,我真的很佩服,我浏览了SOF上发布的问题的所有解决方案,这些问题仅与我的问题有关,但仍然找不到解决方法!
我有一个主表,其列名称为a到z(例如),我还有许多其他名称不同的表,它们具有相同的列模式,现在我想要一个代码,该代码可以从其他表中复制行每张工作表的第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”循环遍历所有工作表,并获取每张工作表中的行数,并将使用的数据复制到主工作表中。