0

我正在尝试将工作表合并到一个工作簿中。我有一本超过 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
4

2 回答 2

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
'....
于 2013-10-04T14:12:23.700 回答
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
于 2015-02-20T07:09:06.110 回答