我有一个工作簿,其中有许多具有不同名称的工作表,这些工作表需要合并到一个工作表中。我发现这个代码运行得很好,除了我需要它忽略一个名为"COMMAND“的工作表(它用于其他目的)。代码目前将创建一个名为"Combined“的工作表,并将所有工作表合并到它,但我更喜欢它,如果合并工作表不需要每次都创建和删除的话。为了清楚起见,除了名为"COMMAND“的工作表之外,此工作簿中的所有工作表都需要合并到”组合“工作表中。
Private Sub COMBINE()
Dim J As Integer
On Error Resume Next
Sheets(1).Select
Worksheets.Add
Sheets(1).Name = "Combined"
Sheets(2).Activate
Range("A1").EntireRow.Select
Selection.Copy Destination:=Sheets(1).Range("A1")
For J = 2 To Sheets.Count
Sheets(J).Activate
Range("A1").Select
Selection.CurrentRegion.Select
Selection.Offset(1, 0).Resize(Selection.Rows.Count - 1).Select
Selection.Copy Destination:=Sheets(1).Range("A65536").End(xlUp)(2)
Next
End Sub
发布于 2019-02-22 16:53:08
您可以尝试:
Option Explicit
Sub test()
Dim LastRow As Long
Dim ws As Worksheet, wsCombined As Worksheet
Dim SheetName As String
Dim SheetExists As Boolean
SheetName = "Combined"
SheetExists = False
With ThisWorkbook
'Check if the Sheet exists
For Each ws In .Worksheets
If ws.Name = SheetName Then
SheetExists = True
Exit For
End If
Next
If SheetExists = False Then
'If the sheet dont exists, create
.Sheets.Add(After:=.Sheets(.Sheets.Count)).Name = SheetName
End If
Set wsCombined = ThisWorkbook.Worksheets("Combined")
For Each ws In .Worksheets
If ws.Name <> "COMMAND" And ws.Name <> "Combined" Then
LastRow = wsCombined.Cells(wsCombined.Rows.Count, "A").End(xlUp).Row
ws.UsedRange.Copy wsCombined.Range("A" & LastRow + 1)
End If
Next
End With
End Sub
发布于 2019-02-22 04:31:33
您可以使用以下代码,将工作表名称更改为第一个工作簿上的工作表名称,而不是Sheets(1).Select。
ThisWorkbook.Sheets("Sheet1").Copy
https://stackoverflow.com/questions/54815621
复制相似问题