Excel 如何用VBA將指定多個工作表合拼成為一個工作表?

在 Excel 中將指定的多個工作表合併成一個工作表,可以使用以下方法:

可以使用以下 VBA 來合併指定的工作表:

  1. 打開 VBA 編輯器:按 Alt + F11。

  2. 插入模塊:點擊「插入」>「模塊」,然後將以下代碼粘貼到模塊中:


    Sub MergeSelectedSheets()
        Dim ws As Worksheet
        Dim masterWs As Worksheet
        Dim lastRow As Long
        Dim sheetNames As Variant
        
        ' Specify the name of the worksheet to be merged
    sheetNames = Array("Sheet1", "Sheet2", "Sheet3") ' Change to your worksheet name
    ' Create a new worksheet after merge
    Set masterWs = ThisWorkbook.Worksheets.Add masterWs.Name = "NewWorksheetName"
    ' Loop through the specified worksheets
    For Each ws In ThisWorkbook.Worksheets If Not IsError(Application.Match(ws.Name, sheetNames, 0)) Then lastRow = masterWs.Cells(masterWs.Rows.Count, 1).End(xlUp).Row + 1 ws.UsedRange.Copy masterWs.Cells(lastRow, 1) End If Next ws End Sub
  3. 關閉 VBA 編輯器:關閉編輯器,然後按 Alt + F8,選擇 MergeSelectedSheets 並點擊「執行」。


可以使用以下 VBA 來合併指定的工作表,並排除第一行:

  1. 打開 VBA 編輯器:按 Alt + F11。

  2. 插入模塊:點擊「插入」>「模塊」,然後將以下代碼粘貼到模塊中:

    Sub MergeSelectedSheetsExcludeFirstRow()
        Dim ws As Worksheet
        Dim masterWs As Worksheet
        Dim lastRow As Long
        Dim sheetNames As Variant
        Dim rng As Range
        
        ' Specify the name of the worksheet to be merged
        sheetNames = Array("Sheet1", "Sheet2", "Sheet3") ' Change to your worksheet name
        
        ' 	Create a new worksheet after merge
        Set masterWs = ThisWorkbook.Worksheets.Add
        masterWs.Name = "NewWorksheetName"
        
        ' Loop through the specified worksheets
        For Each ws In ThisWorkbook.Worksheets
            If Not IsError(Application.Match(ws.Name, sheetNames, 0)) Then
                ' Exclude the first row
                Set rng = ws.UsedRange.Offset(1, 0) ' Exclude the first row
                lastRow = masterWs.Cells(masterWs.Rows.Count, 1).End(xlUp).Row + 1
                rng.Copy masterWs.Cells(lastRow, 1)
            End If
        Next ws
    End Sub
  3. 關閉 VBA 編輯器:關閉編輯器,然後按 Alt + F8,選擇 MergeSelectedSheets 並點擊「執行」。

可以使用以下 VBA 來合併指定的工作表,並排除第一行和保留第一個工作表的第一行

  1. 打開 VBA 編輯器:按 Alt + F11。

  2. 插入模塊:點擊「插入」>「模塊」,然後將以下代碼粘貼到模塊中:

    Sub MergeSelectedSheetsExcludeFirstRow()
        Dim ws As Worksheet
        Dim masterWs As Worksheet
        Dim lastRow As Long
        Dim sheetNames As Variant
        Dim rng As Range
        
        ' 指定要合併的工作表名稱
        sheetNames = Array("Sheet1", "Sheet2", "Sheet3") ' 修改為您的工作表名稱
        
        ' 創建一個新的工作表
        Set masterWs = ThisWorkbook.Worksheets.Add
        masterWs.Name = "合併結果"
        
        ' 複製第一個工作表的數據
        ThisWorkbook.Worksheets(sheetNames(0)).UsedRange.Copy masterWs.Cells(1, 1)
        
        ' 循環遍歷指定的工作表
        For i = 1 To UBound(sheetNames)
            Set ws = ThisWorkbook.Worksheets(sheetNames(i))
            ' 排除第一行
            Set rng = ws.UsedRange.Offset(1, 0) ' 排除第一行
            lastRow = masterWs.Cells(masterWs.Rows.Count, 1).End(xlUp).Row + 1
            rng.Copy masterWs.Cells(lastRow, 1)
        Next i
    End Sub
  3. 關閉 VBA 編輯器:關閉編輯器,然後按 Alt + F8,選擇 MergeSelectedSheets 並點擊「執行」。

可以使用以下 VBA 來合併所有的工作表,並排除第一行和保留第一個工作表的第一行


Sub MergeAllSheetsExcludeFirstRow()
    Dim ws As Worksheet
    Dim masterWs As Worksheet
    Dim lastRow As Long
    Dim rng As Range
    Dim firstSheet As Boolean
    
    ' 創建合併工作表
    Set masterWs = ThisWorkbook.Worksheets.Add
    masterWs.Name = "MergedSheet" ' 設定合併工作表的名稱

    firstSheet = True ' 用於標記是否為第一個工作表
    
    ' 遍歷所有工作表
    For Each ws In ThisWorkbook.Worksheets
        If ws.Name <> masterWs.Name Then ' 避免處理合併工作表
            If firstSheet Then
                ' 複製第一個工作表的第一行
                ws.Rows(1).Copy masterWs.Rows(1)
                firstSheet = False ' 設置為非第一個工作表
            Else
                ' 排除第一行
                Set rng = ws.UsedRange.Offset(1, 0) ' 排除第一行
                
                ' 獲取合併工作表的最後一行
                lastRow = masterWs.Cells(masterWs.Rows.Count, 1).End(xlUp).Row + 1
                
                ' 複製數據到合併工作表
                rng.Copy masterWs.Cells(lastRow, 1)
            End If
        End If
    Next ws
End Sub


先將沒有的分頁刪除

說明:

這些方法可以幫助您有效地將指定的多個工作表合併成一個工作表,根據您的需求選擇合適的方法即可。



發佈留言

0 留言