Excel - 将多张工作表中的数据复制到一张工作表中

Excel - 将多张工作表中的数据复制到一张工作表中

我使用一个将数据导出到多张工作表的程序,并且我需要将这些数据全部放在同一张工作表中。

关于工作表 - 每次导出时它们的名称都会有所不同,因此不需要定义,因为有时会有 100 多个不同的工作表。

工作表内部 - 是不同行和列的数据(我需要将其复制到主表中下一个可用的空白行,直到空白行)。

所有数据都需要复制到的工作表 - 该工作表最初是空白的,但我需要根据来自其他工作表的行复制将所有数据叠加在一起。(如果需要,可以有一个定义的名称)

我是 VBA 新手,所以希望上述解释有所帮助。

我当前的 VBA 不工作:

 Sub SheetLoopPasteData()

Dim ws As Worksheet
Dim wsSheet As Worksheet
Set wsSheet = Sheets("Sheet2")

For Each ws In Worksheets
    ws.Activate
    variable = Cells(Rows.Count, 1).End(xlUp).Row
    Rows("1:" & variable).Copy _
    Destination:=wsSheet.Range("A" & (wsSheet.Range("A" & wsSheet.Rows.Count).End(xlDown).Row + 1))

Next



End Sub

答案1

我想建议 VBA(宏)帮助您将所有工作表中使用的范围复制到新工作表中,就像数据合并一样。

Sub CombineData()

    Dim I As Long
    Dim xRg As Range

    On Error Resume Next

    Worksheets.Add Sheets(1)

    ActiveSheet.Name = "MasterSheet"

   For I = 2 To Sheets.Count
        Set xRg = Sheets(1).UsedRange

        If I > 2 Then
            Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
        End If

        Sheets(I).Activate
        ActiveSheet.UsedRange.Copy xRg
    Next

End Sub

怎么运行的:

  • 复制&粘贴此代码作为模块。
  • 宏将在现有工作簿中创建新工作表,名称为主表,可编辑。
  • 我没有使用将数据从顶行复制到最后一行的方式,而是使用了使用范围方法,因为将适应每一个更新。

答案2

这非常好,但是我需要它来应对特定的范围 - 可以做到吗?


我想建议 VBA(宏)帮助您将所有工作表中使用的范围复制到新工作表中,就像数据合并一样。

子合并数据()

Dim I As Long
Dim xRg As Range

On Error Resume Next

Worksheets.Add Sheets(1)

ActiveSheet.Name = "MasterSheet"

对于 I = 2 至 Sheets.Count 设置 xRg = Sheets(1).UsedRange

    If I > 2 Then
        Set xRg = Sheets(1).Cells(xRg.Rows.Count + 1, 1)
    End If

    Sheets(I).Activate
    ActiveSheet.UsedRange.Copy xRg
Next

End Sub 工作原理:

将此代码复制并粘贴为模块。宏将在现有工作簿中创建可编辑的新工作表,名为 MasterSheet。我使用了 UsedRange 方法,而不是将数据从顶行复制到最后一行,因为它将适应所有更新。

相关内容