[英]How do I copy rows from other sheets to the target sheet?
我有一个情况,如果你能帮助我,我真的很感激,我已经浏览了 SOF 上发布的问题的所有解决方案,这些问题仅与我的问题有关,但我仍然找不到解决方法!
我有一个主表,列名 a 到 z(例如),我还有许多其他名称不同的表,它们具有相同的列模式,现在我想要一个代码来复制从第 2 行开始的其他表中的行每个工作表,到主工作表中的下一个空行。 此外,每个工作表都有可变数量的无法指定的行。 如果你能帮助我,我真的很佩服!!!
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()
来运行此代码
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”,并获取每张工作表中的行数并将使用的数据复制到主工作表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.