使用宏将3个以上的Excel工作表合并到一个工作簿中

时间:2013-10-04 13:23:55

标签: excel excel-vba vba

我试图将工作表合并到一个工作簿中。我有一本超过20张的工作簿。我正在寻找创建一个宏将页面合并在一起(取决于他们的名称)到一个单独的工作簿。

到目前为止,这是我所拥有的代码:它将工作簿中的所有工作表合并在一起,但我想按名称合并它们。

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

2 个答案:

答案 0 :(得分:0)

您需要在循环中添加一个额外的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 :(得分:0)

我的情况你需要相同但是水平(就像我做的那样)(没有名字升级)

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