Sub gộp nhiều file excel thành nhiều sheet

Nếu bạn là một nhân viên kế toán, thủ quỹ hoặc thường xuyên phải làm công tác thống kê thì chắc hẳn hay phải tổng hợp các báo cáo, danh sách ...... từ các phòng ban khác thành 01 file tổng đúng không. Nếu thao tác 1 cách thủ công (copy - paste) thì rất mất thời gian. Hãy áp dụng thủ thuật sau đây để tạo file tổng một cách nhanh chóng, tiện lợi nhé.


Link hướng dẫn bằng video: https://www.youtube.com/watch?v=bazqfJGwLTM&t=130s


Giả sử mình có 2 danh sách nhân viên như hình dưới, bạn nên cho vào cùng 1 thư mục để dễ thao tác.


Sub gộp nhiều file excel thành nhiều sheet


Danh sách 1


Sub gộp nhiều file excel thành nhiều sheet


Danh sách 2


Sub gộp nhiều file excel thành nhiều sheet


Cách 1: Sử dụng code VBA


Bước 1: Bạn tạo thêm 01 file đặt tên là Danh sách tổng, mở file đó ra, bấm tổ hợp phím Alt + F11 (đối với Laptop là Fn + Alt +F11). Chọn tab Insert rồi chọn Module.


Sub gộp nhiều file excel thành nhiều sheet


Bước 2: Bạn dán đoạn code sau vào Module đó rồi Save lại.

Sub GopFileExcel()
    Dim FilesToOpen
    Dim x As Integer

    On Error GoTo ErrHandler
    Application.ScreenUpdating = False

    FilesToOpen = Application.GetOpenFilename _
      (FileFilter:="Microsoft Excel Files (*.xlsx), *.xlsx", MultiSelect:=True, Title:="Files to Merge")

    If TypeName(FilesToOpen) = "Boolean" Then
        MsgBox "No Files were selected"
        GoTo ExitHandler
    End If

    x = 1
    While x <= UBound(FilesToOpen)
        Workbooks.Open Filename:=FilesToOpen(x)
        Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)
        x = x + 1
    Wend

ExitHandler:
    Application.ScreenUpdating = True
    Exit Sub

ErrHandler:
    MsgBox Err.Description
    Resume ExitHandler
End Sub

Sub gộp nhiều file excel thành nhiều sheet


Bước 3: Bạn tiếp tục tạo 1 module mới rồi dán đoạn code dưới đây vào và Save lại.

Sub gopsheet()
  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


Sub gộp nhiều file excel thành nhiều sheet


Bước 4: Bạn thoát trình VBA, quay trở lại file Excel, chọn tab View => View Macros


Sub gộp nhiều file excel thành nhiều sheet


Bước 5: Chọn dòng GopFileExcel rồi click chọn Run


Sub gộp nhiều file excel thành nhiều sheet


Bước 6: Chọn những file cần gộp rồi click Open.


Sub gộp nhiều file excel thành nhiều sheet


- Hệ thống sẽ gộp các file Excel con vào các Sheet trong file Tổng. 


Sub gộp nhiều file excel thành nhiều sheet


Sub gộp nhiều file excel thành nhiều sheet


Sub gộp nhiều file excel thành nhiều sheet


Bước 7: Thao tác lại giống bước 5 nhưng chọn dòng gopsheet nhé. 


Sub gộp nhiều file excel thành nhiều sheet


- Hệ thống sẽ gộp các Sheet lại thành 01 Sheet tổng hợp. Bạn căn chỉnh lại cho phù hợp nhé. 


Sub gộp nhiều file excel thành nhiều sheet


Cách 2: Sử dụng tính năng Move or copy


Với cách này bạn có thể sao chép Sheet từ file này thành 1 Sheet của file khác. Ví dụ mình sẽ sao chép Sheet 1 của Danh sách 2 Vào file Danh sách 1. 

Bước 1: Mở Danh sách 2, click chuột phải vào Sheet 1 rồi chọn Move or copy. Nếu muốn chọn nhiều Sheet thì bạn giữ Ctrl hoặc Shift rồi click chuột trái để chọn.


Sub gộp nhiều file excel thành nhiều sheet


Bước 2: 
- Tại dòng To book, chọn Danh sach 1
- Trong phần Before sheet thì bạn chọn vị trí Sheet 


Sub gộp nhiều file excel thành nhiều sheet


Sau khi gộp thì các file Excel sẽ thành các Sheet trong file Tổng. Bạn có thể áp dụng code gộp sheet vào cách 2 cho hoàn thiện.