使用宏将3个以上Excel工作表合并到一个工作簿中
我正在尝试将工作表合并到一个工作簿中。我有一本20多页的工作手册。我想创建一个宏,将工作表合并到一个单独的工作簿中(取决于它们的名称) 到目前为止,这是我得到的代码:它将工作簿中的所有工作表合并在一起,但我想按名称合并它们使用宏将3个以上Excel工作表合并到一个工作簿中,excel,vba,Excel,Vba,我正在尝试将工作表合并到一个工作簿中。我有一本20多页的工作手册。我想创建一个宏,将工作表合并到一个单独的工作簿中(取决于它们的名称) 到目前为止,这是我得到的代码:它将工作簿中的所有工作表合并在一起,但我想按名称合并它们 Sub mergedata() Sheets(1).Activate lastrow = ActiveSheet.UsedRange.Rows.Count For Each Sheet In Sheets If Sheet.Index <> 1
Sub mergedata()
Sheets(1).Activate
lastrow = ActiveSheet.UsedRange.Rows.Count
For Each Sheet In Sheets
If Sheet.Index <> 1 Then
RowCount = Sheet.UsedRange.Rows.Count
Sheet.UsedRange.Copy Destination:=Sheets(1).Cells(lastrow + 1, 1)
lastrow = lastrow + RowCount
Sheet.UsedRange.Clear
End If
Next Sheet
End Sub
子合并数据()
第(1)页。激活
lastrow=ActiveSheet.UsedRange.Rows.Count
每一张中的每一张
如果是表索引1,则
RowCount=Sheet.UsedRange.Rows.Count
Sheet.UsedRange.Copy目标:=工作表(1).单元格(lastrow+1,1)
lastrow=lastrow+RowCount
Sheet.UsedRange.Clear
如果结束
下一页
端接头
您需要在循环中添加一个额外的if语句。这可能是这样的:
'.....
For Each Sheet In Sheets
If Sheet.Index <> 1 Then
If Sheet.Name = "NameOfSheet" or Sheet.Name = "NameIsCaseSensitive" then
RowCount = Sheet.UsedRange.Rows.Count
Sheet.UsedRange.Copy Destination:=Sheets(1).Cells(lastrow + 1, 1)
lastrow = lastrow + RowCount
Sheet.UsedRange.Clear
end if
End If
Next Sheet
'....
“。。。。。
每一张中的每一张
如果是表索引1,则
如果Sheet.Name=“NameOfSheet”或Sheet.Name=“NameIsCaseSensitive”,则
RowCount=Sheet.UsedRange.Rows.Count
Sheet.UsedRange.Copy目标:=工作表(1).单元格(lastrow+1,1)
lastrow=lastrow+RowCount
Sheet.UsedRange.Clear
如果结束
如果结束
下一页
'....
如果您需要相同但水平的(就像我一样)(不升级名称)
Sub-mergedata_-horizontal()
第(1)页。激活
lastcol=ActiveSheet.UsedRange.Columns.Count
每一张中的每一张
如果是表索引1,则
ColCount=Sheet.UsedRange.Columns.Count
Sheet.UsedRange.Copy目标:=工作表(1)。单元格(1,lastcol+1)
lastcol=lastcol+ColCount
Sheet.UsedRange.Clear
如果结束
下一页
端接头
谢谢,这非常有效。我有没有办法修改它,使这些工作表合并在一个单独的工作簿中打开?对不起,我没有收到你的评论问题,你能澄清一下吗?如果“这很好用”,你为什么要删除你的答案?
Sub mergedata_horizontal()
Sheets(1).Activate
lastcol = ActiveSheet.UsedRange.Columns.Count
For Each Sheet In Sheets
If Sheet.Index <> 1 Then
ColCount = Sheet.UsedRange.Columns.Count
Sheet.UsedRange.Copy Destination:=Sheets(1).Cells(1, lastcol + 1)
lastcol = lastcol + ColCount
Sheet.UsedRange.Clear
End If
Next Sheet
End Sub