【问题标题】:Merge more than 3 Excel worksheets into one workbook with macro将超过 3 个 Excel 工作表合并到一个带有宏的工作簿中
【发布时间】:2013-10-04 13:23:54
【问题描述】:

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

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    您需要在循环中添加一个额外的 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
    '....
    

    【讨论】:

    • 感谢这完美的作品。有什么办法可以修改它以获取组合在单独工作簿中打开的工作表?
    • 抱歉,我没有收到您的评论问题,您能澄清一下吗?如果“这很有效”,您为什么要删除您的答案接受?
    【解决方案2】:

    我想你需要相同但水平的(就像我一样)(没有名称升级)

    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
    

    【讨论】:

      猜你喜欢
      • 2020-06-03
      • 1970-01-01
      • 2021-08-09
      • 1970-01-01
      • 2015-09-07
      • 2014-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多