
我使用一個將資料匯出到多個工作表的程序,我需要將這些資料全部放在同一張工作表中。
關於工作表 - 每次匯出時它們的名稱都不同,因此無需定義,因為有時有 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方法來代替從頂行到最後一行的複製數據,因為它將適應每次更新。