我有一個包含多個標籤的工作表,用於標識不同的數據源。我需要將所有工作表合併到一個工作表中,並添加一個包含工作表名稱的列作爲新組合工作表的一部分。合併工作表並在Excel中添加列
我發現下面的代碼,如果我剪切/粘貼到我的工作表中它就像一個魅力,但我有幾個這些工作簿的,我必須能夠每月重建這一過程。
我的研究表明,我應該創造一個COM加載項或可調用宏這一點,但每次我試圖做的過程中失敗。如果somone能指出我在Excel中執行此操作的步驟(2013),並告訴我我的代碼是否可行,我將非常感激。
在此先感謝。
Sub Combine()
Dim J As Integer, wsNew As Worksheet
Dim rngCopy As Range, rngPaste As Range
Dim Location As String
On Error Resume Next
Set wsNew = Sheets("Combined")
On Error GoTo 0
'if sheet does not already exist, create it
If wsNew Is Nothing Then
Set wsNew = Worksheets.Add(before:=Sheets(1)) ' add a sheet in first place
wsNew.Name = "Combined"
End If
'copy headings and paste to new sheet starting in B1
With Sheets(2)
Range(.Range("A1"), .Cells(1, Columns.Count).End(xlToLeft)).Copy wsNew.Range("B1")
End With
' work through sheets
For J = 2 To Sheets.Count ' from sheet 2 to last sheet
'save sheet name/location to string
Location = Sheets(J).Name
'set range to be copied
With Sheets(J).Range("A1").CurrentRegion
Set rngCopy = .Offset(1, 0).Resize(.Rows.Count - 1)
End With
'set range to paste to, beginning with column B
Set rngPaste = wsNew.Cells(Rows.Count, 2).End(xlUp).Offset(2, 0)
'copy range and paste to column *B* of combined sheet
rngCopy.Copy rngPaste
'enter the location name in column A for all copied entries
Range(rngPaste, rngPaste.End(xlDown)).Offset(0, -1) = Location
Next J
End Sub
感謝蒂姆您的意見。由於我對此非常陌生,您是否可以通過「使用工作簿對象引用限定所有工作表引用」來指導您的意思。 – user3462078
查看我上面的編輯。 –
謝謝Tim!這就像一個魅力!我會研究這個,所以我可以做更多這些! – user3462078