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

結束子它是如何運作的:

將此程式碼複製並貼上為模組。巨集將在現有工作簿中建立名為 MasterSheet 的新工作表,該工作表是可編輯的。我使用了UsedRange方法來代替從頂行到最後一行的複製數據,因為它將適應每次更新。

相關內容